我有以下脚本:
#!/bin/bash
if [ "$EUID" -ne 0 ]
then
echo ''
echo 'Please run the script as root'
echo ''
exit
fi
for run in {1..11}
do
sudo ./start_ap.sh
sleep 10
sudo ./tst.sh
done
问题是执行后
sudo ./start_ap.sh
下一行不会被执行,因为行sudo ./start_ap.sh需要CTRL + C才能停止,然后才会执行下一行。
但是,我希望sudo ./start_ap.sh将在sudo ./tst.sh之后终止,并且在下一步这将重复11次。
到目前为止,在执行了sudo ./start_ap.sh之后,如果不删除其进程,则不会执行下一行。
我怎么能意识到它?
P.S。 start_ap.sh启动hostapd,这就是为什么它需要为下次执行查杀的原因。
答案 0 :(得分:1)
您需要在后台运行./start_ap.sh
,然后在./tst.sh
完成后将其终止。请注意,如果您实际以root身份运行脚本,则无需在脚本中使用sudo
for run in {1..11}; do
./start_ap.sh & pid=$!
sleep 10
./tst.sh
kill "$pid"
done