이 명령줄이 인쇄되지 않는 이유가 궁금합니다 pidof sh
.
$ sh -c "var=`pidof sh` ; echo \$var; ps -H"
123
예상대로 인쇄됩니다 .
$ sh -c "var=123 ; echo \$var; ps -H"
저는 우분투 리눅스를 사용하고 있습니다.
답변1
따옴표를 놓쳤습니다. 한 가지 방법은 다음과 같습니다.
sh -c "var=\"`pidof sh`\" ; echo \$var; ps -H"
다른:
sh -c "var=\"\`pidof sh\`\" ; echo \$var; ps -H"
pidof sh
실행 방식이 다르다는 점에 유의하세요! 첫 번째 버전에서는 백틱( )으로 묶인 표현식이 pidof sh
현재 쉘에 의해 실행되었습니다.앞으로 sh -c
달리기. 두 번째에서는 sh -c
실행되는 명령 입니다 pidof
. 게다가 pidof
역따옴표 안의 표현식을 평가하는 하위 쉘에서 실행되므로 var
변수에 추가 pid가 나열됩니다. (더 간단하게:백틱은 다른 쉘을 호출합니다.그런 다음 pidof로 나열됩니다. )
두 가지 모두에 대해 더 나은 접근 방식은 $( ... )
또는 을 사용하는 것입니다 \$( ... )
.