Shell

使用 pidofsh -c

  • October 25, 2014

我想知道為什麼這個命令行不列印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 執行 - 即before sh -c執行。第二個是sh -c執行的命令pidof。不僅如此,它還在一個子shell 中執行,該子shell 計算反引號內的表達式——因此您會在變數pidof中列出一個額外的pid 。var(更簡單地說:反引號呼叫另一個 shell,然後由 pidof 列出。)

兩者的更好方法是使用$( ... )or \$( ... )

引用自:https://unix.stackexchange.com/questions/19588