循环停止

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 循环将结束。