一時ファイルなしでそれを行うだけです。最後のgrepの結果をwhileにパイプします。
Ctrl + Cを検出するためにSIGINTにフックすることができますが、必要がないのになぜ心配するのでしょうか。それでもSIGKILLに接続することはできません。
for f in bin/* ; do
ldd $f 2>/dev/null | awk '{print $1}'
done | sort -u | grep -v -e '^not$' -e 'ld-linux' | while read soname ; do
process_so_name $soname
done
関数にループを配置することで、これをより認識しやすくすることができます(これは、スクリプトファイルまたはシェルで行うことができます)。
step_1() {
for f in bin/* ; do
ldd $f 2>/dev/null | awk '{print $1}'
done
}
step_2() {
while read soname ; do
process_so_name $soname
done
}
step_1 | grep -v -e '^not$' -e 'ld-linux' | step_2
SIGINTにフックするには、次のようにします。
trap "echo SIGINT; rm -f tempfile; exit -1" INT
SIGTERMにフックするには(下のコメントを参照)、次のようにします。
trap "echo SIGTERM; rm -f tempfile; exit -1" EXIT