"sh -c"와 함께 "pidof"를 사용하세요.

"sh -c"와 함께 "pidof"를 사용하세요.

이 명령줄이 인쇄되지 않는 이유가 궁금합니다 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로 나열됩니다. )

두 가지 모두에 대해 더 나은 접근 방식은 $( ... )또는 을 사용하는 것입니다 \$( ... ).

관련 정보