108 ps --ppid $process | while read -r line ; do
109 #echo $line | awk '{print $1;}
110 child=$($line | awk '{print $1;}')
111 echo $child
113 done
このコードを実行すると、次のエラーが発生します。
line 111: 3405: command not found
ただし、行109のコメントを削除すると、エラーなしで正しい値が印刷されます。
答え1
問題は、実際に値を$line
割り当てるのではなく、awk
コマンドで実行しようとしていることです。
特定のPIDを持つプロセスの子を出力したい場合は、ループは必要ありません。
ps --ppid "$process" -o pid=
これにより、PPIDを含むプロセスのリスト$process
と各出力のPIDが表示されます。
また関連:
答え2
修正する...
ps --ppid $process | while read -r line ; do
child=$(echo $line | awk '{print $1}')
done