![](/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.