如何在bash脚本中重写while循环以防止创建临时文件?

Dan*_*Lin 2 bash

我认为生成临时文件可能会更慢,如果用户按ctrl+c,临时文件将变为垃圾.

这是我的原始代码

for f in bin/* ; do
  ldd $f 2>/dev/null | awk '{print $1}'
done | sort -u | grep -v -e '^not$' -e 'ld-linux' > list.1
while read soname ; do
  process_so_name $soname
done < list.1
Run Code Online (Sandbox Code Playgroud)

是否可以删除临时文件列表.

Mih*_*ila 5

只是没有临时文件.将最后一个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
Run Code Online (Sandbox Code Playgroud)

要挂钩到SIGINT,请执行以下操作:

trap "echo SIGINT; rm -f tempfile; exit -1" INT
Run Code Online (Sandbox Code Playgroud)

要挂钩到SIGTERM(请参阅下面的评论),请执行以下操作:

trap "echo SIGINT; rm -f tempfile; exit -1" EXIT
Run Code Online (Sandbox Code Playgroud)