Shell使用
使用 pidof
和 sh -c
我想知道為什麼這個命令行不列印
pidof sh
:$ sh -c "var=`pidof sh` ; echo \$var; ps -H"
這個
123
按預期列印$ sh -c "var=123 ; echo \$var; ps -H"
我在 Ubuntu Linux 上。
你錯過了報價。一種方法:
sh -c "var=\"`pidof sh`\" ; echo \$var; ps -H"
其他:
sh -c "var=\"\`pidof sh\`\" ; echo \$var; ps -H"
請注意,它們在
pidof sh
執行時有所不同!在第一個版本中,反引號 (pidof sh
) 中的表達式由您目前的 shell 執行 - 即beforesh -c
執行。第二個是sh -c
執行的命令pidof
。不僅如此,它還在一個子shell 中執行,該子shell 計算反引號內的表達式——因此您會在變數pidof
中列出一個額外的pid 。var
(更簡單地說:反引號呼叫另一個 shell,然後由 pidof 列出。)兩者的更好方法是使用
$( ... )
or\$( ... )
。