
このコマンドラインが印刷されない理由は疑問に思いますpidof sh
。
$ sh -c "var=`pidof sh` ; echo \$var; ps -H"
123
期待どおりに印刷されます。
$ sh -c "var=123 ; echo \$var; ps -H"
私はUbuntu Linuxを使用しています。
答え1
引用符を逃しました。 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
ランニング。 2番目はsh -c
実行されるコマンドですpidof
。さらに、pidof
逆引用符内の式を評価するサブシェルで実行されるため、var
変数に追加のpidが一覧表示されます。 (もっと簡単に:バックティックは別のシェルを呼び出します。それからpidofとしてリストされます。 )
両方のためのより良いアプローチは、または$( ... )
を使用することです\$( ... )
。