2016-03-25 8 views
0

ich einen Shell-Skript erstellen möchte einige Befehle auf dem Terminal laufen, aber das Skript wird nicht aufhören, bis ich Terminal fertig mitStop-while-Schleife

Beispiel:

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 

mag ich die while-Schleife anhalten und warten, bis die Option 1 beendet ist und dann fortfahren.

+0

Ich schlage vor: 'help break' – Cyrus

+0

Ich will die while-Schleife' wait' nicht 'stop' –

Antwort

0

Warum nicht eine zusätzliche while-Schleife versuchen, die im Grunde darauf wartet, dass dieser Befehl endet?

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 

Hier ist eine Antwort auf Ihre Frage aus den Kommentaren:

while [[ $(find /var/cache/apt/archives -type f -name "*.deb") != "" ]] ; do 
    sleep 1 
done 

Dies wird die/var/cache/apt/archives für alle Dateinamen suchen, die in .deb beenden und warten Sie auf eine Sekunden vor einer erneuten Suche. Wenn keine Dateien gefunden wurden, wird die While-Schleife beendet.

+0

tunx ist worlk mit' sudo apt-get update' aber was ist mit 'sudo rm -vf/var/cache/apt/archives/*. deb' –

+0

Nicht sicher, was du von tunx sagen wolltest, ist worlk? – bluerojo

+0

Entschuldigung ich meine "Danke ist Arbeit" –