
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;'