繁体   English   中英

Bash 子外壳到文件

[英]Bash subshell to file

我正在循环一个大文件,在每一行我运行一些命令,当它们完成时,我希望将整个 output 附加到文件中。

由于没有什么能阻止我一次运行多个命令,我尝试在后台运行它&

它没有按预期工作,它只是在命令完成时将命令附加到文件中,而不是按照它们在子shell中出现的顺序

#!/bin/bash
while read -r line; do
  (
    echo -e "$line\n-----------------"
    trivy image --severity CRITICAL $line
    # or any other command that might take 1-2 seconds
    echo "============="
  ) >> vulnerabilities.txt &
done <images.txt

我哪里错了?

考虑使用GNU Parallel来并行完成很多事情。 在你的情况下:

parallel -k -a images.txt trivy image --severity CRITICAL > vulnerabilities.txt

-k使 output 保持有序。 添加--bar--eta用于进度报告。 添加--dry-run以查看它在不实际执行任何操作的情况下做什么。 添加-j...来控制任意一次并行作业的数量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM