私は小さなスクリプトを作成しましたが、何らかの理由で、パラメーターで渡されたスペースをエスケープして機能させる必要があります。
この問題を抱えている人々に関する他の多くの記事を読みました。これは通常、$ @を引用しないことが原因ですが、すべての変数はスクリプト内で引用され、パラメーターもコマンドラインで引用されています。また、スクリプトをデバッグモードで実行すると、返される行はコピーアンドペーストで正常に実行できますが、スクリプト内から実行すると失敗します。
コード:
connections ()
{
args="$@"
pid="$(pgrep -nf "$args")"
echo $pid
# code that shows TCP and UDP connections for $pid
}
connections "$@"
例:
bash test.sh "blah blah"
失敗し、代わりに現在実行中のシェルのpidを返します
bash test.sh "blah\ blah"
成功し、pgrepを介して検索しているプロセスのpidを返します