異なる結果として、端末とスクリプトで同じコマンドを段階的に実行する[冗長]

異なる結果として、端末とスクリプトで同じコマンドを段階的に実行する[冗長]
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

engrampa3つのオープンプロセスインスタンスがあるとします。

ターミナルで上記のコマンドを段階的に実行すると、目的の結果が得られます。2590

https://i.stack.imgur.com/L3U2g.jpg

スクリプトでこれらの exaclty コマンドを実行すると、次の結果が表示されます。2590 18425 18449

https://i.stack.imgur.com/RuGX9.jpg

なぜこれが起こるのですか?

ベストアンサー1

編集:Steeldriverのコメントのおかげで私の問題が確認されました。

飛び込んecho $pid | head -1bash何もしないでください。シェルで同じコマンドを実行すると、目的のzsh結果が得られます。

bash シェル出力 ->2590 18425 18449

zsh シェル出力->2590

つまり、スクリプトのシェルを#!/bin/zsh

編集:もう一つのより適切な解決策は、両方のシェルで動作することecho $pid | awk '{print $1}'です。echo $pid | head -1Christopherのコメントに感謝します。

おすすめ記事