Verhindern Sie, dass ein Bash -Skript nach einem Terminalbefehl eine Schleife verlassenLinux

Linux verstehen
Anonymous
 Verhindern Sie, dass ein Bash -Skript nach einem Terminalbefehl eine Schleife verlassen

Post by Anonymous »

Ich versuche, ein Bash -Skript zu schreiben, das ADB Befehle ausgibt, um Pakete aus einer Liste von Paketen in einer Datei zu entfernen. Mein Skript lässt jedoch die Schleifen, die über die Datei iteriert, wenn das Skript einen adb -Befehl ausführt. Während ich lächerlich aussah, fügte ich einige "Making It Here Here Here" -Erchrucke hinzu, um herauszufinden, wo die Dinge in meiner Verwirrung endeten. Die Skriptausführung scheint am Ende des Skripts zu sein. Sie wird aus Gründen, die ich nicht verstehe, nur nicht mehr vor dem Ende der Datei eingeschaltet.

Code: Select all

#!/bin/bash

if [[ -z $1 ]]
then
echo "Enter file name for list of packages to purge"
read PurgeFile
else
PurgeFile=$1
fi

LINE=1

while read -r CURRENT_LINE
do
if [[ $CURRENT_LINE != "" ]]
then
echo "attempting to remove: $LINE: $CURRENT_LINE"
#note, Next line causes the loop to exit if not commented out
adb shell pm uninstall --user 0 $CURRENT_LINE || true
fi
echo "Made it here"
((LINE++))
echo "Made it to outer loop"
done < $PurgeFile
Wenn die Zeile, die ADB Shell PM startet, kommentiert wird, wird dieses Skript korrekt die gesamte Datei durchläuft und die "Make It ..." -Ancho-Printouts korrekt druckt. Aber wenn dieser ADB-Befehl hinterlassen ist, schafft es das Skript in die erste nicht leere Zeile in der Datei und scheint vor dem Ende zu den Fertig Hier ist der Ausdruck aus einem Lauf, bei dem der erste ADB < /code> -Aufruf ein Erfolg ist, wobei der Rest der Liste in der Datei auch erfolgreich sein sollte: < /p>

Code: Select all

$ bash Android_Purge_Script.sh  Purge_Packages.txt
attempting to remove: 1: android.autoinstalls.config.samsung
Success
Made it here
Made it to outer loop
< /code>
Hier ist der Pintout von einem Lauf, bei dem der erste 'Adb' -Anruf ein Fehler ist, aber der Rest der Liste in der Datei erfolgreich sein sollte: < /p>
bash Android_Purge_Script.sh  Purge_Packages.txt
attempting to remove: 1: android.autoinstalls.config.samsung
Failure [not installed for 0]
Made it here
Made it to outer loop
und unten finden Sie die ersten Dutzend Zeilen des Ausdrucks, wenn genau das gleiche purge_packages.txt Datei verwendet wird, wenn ich den ADB -Anruf im Skript kommentiere. Die Ausgabe wird gekürzt, um nicht die Zeit aller zu verschwenden, mit ein paar hundert Zeilen, die das gleiche Muster mit geringfügigen Variationen in Instanzen immer wieder zeigen. < /P>

Code: Select all

attempting to remove: 1: android.autoinstalls.config.samsung
Made it here
Made it to outer loop
attempting to remove: 2: com.amazon.appmanager
Made it here
Made it to outer loop
Made it here
Made it to outer loop
attempting to remove: 4: com.android.apps.tag
Made it here
Made it to outer loop
Made it here
Made it to outer loop
attempting to remove: 6: com.android.bips
Made it here
Made it to outer loop
Made it here
Made it to outer loop
attempting to remove: 8: com.android.bluetoothmidiservice
Made it here
Made it to outer loop
Made it here
Made it to outer loop
attempting to remove: 10: com.android.bookmarkprovider
Made it here
Made it to outer loop
Made it here
Made it to outer loop
attempting to remove: 12: com.android.calllogbackup
Made it here
Made it to outer loop
Made it here
Made it to outer loop
attempting to remove: 14: com.android.chrome

Man kann die meist abwechselnden leeren Zeilen in der Datei korrekt in dem obigen Beispiel übergeben, wo die vier "es gemacht haben ...". Echo-Drucke treten vor der nächsten Zeile mit Inhalt auf.>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post