2016-03-25 6 views
0

私は、端末上でいくつかのコマンドを実行するシェルスクリプトを作成したいが、私は、端末に停止ループ

例使用を終了するまでスクリプトは停止しませんながら:

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が終了してから続行するまで停止してください。

+0

私はお勧めします: 'help break' – Cyrus

+0

私はwhileループを待ちます' wait' not stop ' –

答えて

0

ループを追加すると、基本的にそのコマンドが終了するのを待ちます。ここで

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 

これはdebファイルで終わる任意のファイル名のの/ var/cache/apt /アーカイブを検索し、1待ちますもう一度検索する前にファイルが見つからないと、whileループは終了します。

+0

tunxは' sudo apt-get update'でworlkですが、 'sudo rm -vf/var/cache/apt /アーカイブ/ *。deb' –

+0

あなたはtunxの言いたいことが分かっていませんか? – bluerojo

+0

申し訳ありません私は "ありがとうございます仕事" –

関連する問題