在bash脚本中与循环并行运行命令

时间:2020-10-30 11:24:05

标签: bash shell

我有一个脚本,其中我使用tshark开始捕获数据包,然后检查用户是否已提交输入文本文件。
如果存在文件,则需要通过循环为文件中的每个项目运行一个命令(运行tshark时);否则继续运行tshark。 我还希望通过用户输入(例如字母)停止tshark

代码段:

echo "Starting tshark..."
sleep 2
tshark -i ${iface} &>/dev/null 
tshark_pid=$!

# if devices aren't provided (such as in case of new devices, start capturing directly)
if [ -z "$targets" ]; then
        echo "No target list provided."
else
        for i in $targets; do
                echo "Attempting to deauthenticate $i..."
                sudo aireplay-ng -0 $number -a $ap -c $i $iface$mon
        done
fi

这里发生的是tshark开始,只有当我使用Ctrl+c退出它时,它才会继续到if语句和随后的循环。

1 个答案:

答案 0 :(得分:0)

在命令末尾添加&会在新的子进程中执行命令。注意,您将无法使用ctlr + c

杀死它

示例: firefox 会挡住外壳 firefox &不会阻止外壳