Bash -c에서 변수를 선언하는 방법

Bash -c에서 변수를 선언하는 방법

bash -c명령 내에서 변수를 선언하는 방법을 모르겠습니다 .

bash -c "var=3; echo $var"

답변1

여기서 실제로 무슨 일이 일어나고 있는지 살펴보겠습니다.

$ set -x
$ bash -c "var=3; echo $var"
+ bash -c 'var=3; echo '

set -x실제 실행된 명령을 추적할 수 있습니다(해제 사용 ) set +x. 여기서는 $var변수가 빈 문자열로 확장되는 것을 볼 수 있습니다.앞으로서브쉘 bash -c도 실행할 수 있습니다.

bash -c이는 현재 쉘이 문자열 내에서 변수 확장을 수행하도록 프롬프트하는 매개변수의 큰따옴표로 인해 발생합니다 . 현재 셸에서 변수 var가 정의되지 않았거나 비어 있으므로 해당 확장은 빈 문자열입니다.

셸의 "간섭"으로부터 문자열을 보호하려면 작은따옴표를 사용하세요.

$ bash -c 'var=3; echo $var'
+ bash -c 'var=3; echo $var'
3

...또는 탈출 $(그다지 좋지 않은 IMO):

$ bash -c "var=3; echo \$var"
+ bash -c 'var=3; echo $var'
3

답변2

$?합계는 $a호출 쉘에서 계산되기 때문입니다 .

bash -c 'cat /tmp/lol ; a=$?; if (( $a == 0)); then echo "2"; fi;'

관련 정보