한 함수에서 다른 함수로 변수를 전달하는 방법

한 함수에서 다른 함수로 변수를 전달하는 방법
updateEnvironmentField() {

          linewithoutquotes=`echo $LINE | tr -d '"'`
             b()
}

$linewithoutquotes라는 변수를 updateEnvironmentField() 메서드에서 호출되는 b()라는 다른 메서드에 전달하려고 합니다. 위의 요구 사항을 달성하기 위해 쉘 스크립트를 사용하는 방법

답변1

b () {
    arg=$1
    # more code here
}

updateEnvironmentField () {
    linewithoutquotes=`echo $LINE | tr -d '"'`
    b "$linewithoutquotes"
}

여기서는 b명령 대체 결과를 문자열로 호출합니다. 이 b함수는 변수에서 문자열을 받습니다 arg.

printf대신 in 을 사용해야 하며 공백과 와일드카드 문자 등이 데이터를 엉망으로 만들지 않도록 확장을 적절하게 echo인용해야 합니다 . 더 나은 성능을 위해 백틱도 다음과 같이 변경했습니다.$LINE$(...)

updateEnvironmentField () {
    linewithoutquotes=$( printf '%s\n' "$LINE" | tr -d '"' )
    b "$linewithoutquotes"
}

bash쉘을 사용하는 경우 ${variable//pattern}매개변수 대체를 사용하여 큰따옴표를 제거할 수 있습니다.

updateEnvironmentField () {
    linewithoutquotes=${LINE//\"}
    b "$linewithoutquotes"
}

그렇지 않으면

updateEnvironmentField () {
    b "${LINE//\"}"
}

관련된:

관련 정보