pid=$(pgrep 'engrampa') #Get the PID of the engrampa processes .
killpid=$(echo $pid | head -1) #Get only the first line of the $pid variable and put into a new variable called $killpid.
kill $killpid
変数の最初の行だけを維持したいと思います$pid
。
engrampa
3つのオープンプロセスインスタンスがあるとします。
ターミナルで上記のコマンドを段階的に実行すると、目的の結果が得られます。2590
https://i.stack.imgur.com/L3U2g.jpg
スクリプトでこれらの exaclty コマンドを実行すると、次の結果が表示されます。2590 18425 18449
https://i.stack.imgur.com/RuGX9.jpg
なぜこれが起こるのですか?
ベストアンサー1
編集:Steeldriverのコメントのおかげで私の問題が確認されました。
飛び込んecho $pid | head -1
でbash
何もしないでください。シェルで同じコマンドを実行すると、目的のzsh
結果が得られます。
bash シェル出力 ->2590 18425 18449
zsh シェル出力->2590
つまり、スクリプトのシェルを#!/bin/zsh
。
編集:もう一つのより適切な解決策は、両方のシェルで動作することecho $pid | awk '{print $1}'
です。echo $pid | head -1
Christopherのコメントに感謝します。