循环停止
Stop while loop
我想为终端上的运行一些命令创建一个shell脚本,但在我使用完终端之前脚本不会停止
示例:
while true ; do
echo -e "type 1 or 2 : "
read answer
case "$answer" in
1 )
xfce4-terminal -e "sudo apt-get update"
;;
2 )
xfce4-terminal -e "sudo apt-get install firefox"
;;
esac
done
我希望 while 循环停止并等待选项 1 完成然后继续。
为什么不尝试使用一个额外的 while 循环来监听该命令的结束?
case "$answer" in
1 )
xfce4-terminal -e "sudo apt-get update"
while [[ $(ps -elf | grep -v "grep" | grep -c "apt-get update") != "0" ]] ; do
sleep 2
done
;;
2 )
xfce4-terminal -e "sudo apt-get install firefox"
;;
esac
以下是评论中对您问题的回答:
while [[ $(find /var/cache/apt/archives -type f -name "*.deb") != "" ]] ; do
sleep 1
done
这将在 /var/cache/apt/archives 中搜索任何以 .deb 结尾的文件名,并等待一秒钟,然后再次搜索。一旦没有找到文件,while 循环将结束。
我想为终端上的运行一些命令创建一个shell脚本,但在我使用完终端之前脚本不会停止
示例:
while true ; do
echo -e "type 1 or 2 : "
read answer
case "$answer" in
1 )
xfce4-terminal -e "sudo apt-get update"
;;
2 )
xfce4-terminal -e "sudo apt-get install firefox"
;;
esac
done
我希望 while 循环停止并等待选项 1 完成然后继续。
为什么不尝试使用一个额外的 while 循环来监听该命令的结束?
case "$answer" in
1 )
xfce4-terminal -e "sudo apt-get update"
while [[ $(ps -elf | grep -v "grep" | grep -c "apt-get update") != "0" ]] ; do
sleep 2
done
;;
2 )
xfce4-terminal -e "sudo apt-get install firefox"
;;
esac
以下是评论中对您问题的回答:
while [[ $(find /var/cache/apt/archives -type f -name "*.deb") != "" ]] ; do
sleep 1
done
这将在 /var/cache/apt/archives 中搜索任何以 .deb 结尾的文件名,并等待一秒钟,然后再次搜索。一旦没有找到文件,while 循环将结束。