循环停止

时间:2016-03-25 20:14:38

标签: linux bash shell sh

我想创建一个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完成然后继续。

1 个答案:

答案 0 :(得分:0)

为什么不尝试一个基本上监听该命令结束的额外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循环就会完成。