
ps -ef | while read line; do
for i in $line; do
if [ $i = 'bash' ]; then
echo $line;
fi;
done;
done;
unset i;
コマンドは Bash プロセスを表示しながら適切に実行されますが、追加の Bash プロセスが作成され、表示されます。チェック内部で何か関係があることを期待しています。条件内と条件のif
両方で、一重引用符/二重引用符の有無にかかわらず実行してみました。プロセスはまだ作成され、表示されています。出力を取得するために使用することもできましたが、この方法で試してみたかったのです。$i
bash
if
grep
訂正して下さい。
答え1
パイプによって追加のプロセスが作成されます。
詳細についてはこちらをご覧くださいbashとプロセスツリーの非常に良い説明。
の出力はps
解析できるように設計されていないことに注意してください。解析しようとする場合は、ps
を使用する方が適切である可能性が高くなりますpgrep
。