![](/img/trans.png)
[英]Does git bash create a subshell by default when running a script file?
[英]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.