只需在没有临时文件的情况下执行此操作。将最后一个 grep 的结果通过管道传输到 while 中。
您可以连接到 SIGINT 以检测 Ctrl+C,但如果您不需要,何必担心呢?你仍然无法连接到 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
您可以通过将循环放置在函数中来使其看起来更容易识别(您可以在脚本文件中或直接在 shell 中执行此操作):
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