Остановите сценарий Bash от выхода из петли после команды терминалаLinux

Ответить
Anonymous
 Остановите сценарий Bash от выхода из петли после команды терминала

Сообщение Anonymous »

Я пытаюсь написать сценарий Bash, который выпустит команды ADB для удаления пакетов из списка пакетов в файле. Тем не менее, мой скрипт оставляет петли, которые отражают файл, если скрипт выполняет любую команду ADB . Несмотря на то, что я смешно выглядел, я добавил некоторых эхо -распечатки «Сделано здесь», чтобы выяснить, где все заканчивалось в моей путанице. Выполнение скрипта, кажется, находится в конце сценария, оно просто прекращает цикл до конца файла по причинам, которые я не понимаю.

Код: Выделить всё

#!/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
Если строка, которая запускает Adb Shell Pm ... , прокомментирована, этот скрипт правильно проходит весь файл и печатает «Made It ...» Echo-Printouts вносит их правильно. Но если эта команда ADB осталась, сценарий попадает в первую непустую строку в файле и, кажется, доходит до выполненного Вот распечатка из запуска, где первый вызов ADB < /code> является успешным, где остальная часть списка в файле также должна быть успешной: < /p>

Код: Выделить всё

$ 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>
Вот пинтаута из выполнения, где первый вызов ADB ' - это сбой, но где остальная часть списка в файле должна быть успешной: < /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
и ниже представлены первые несколько десятков строк распечатки при использовании того же самого и того же файла purge_packages.txt , если я прокомментирует ADB вызов в скрипте. Вывод сокращается, чтобы не тратить время каждого, а пара сотен линий снова демонстрирует ту же схему с незначительными изменениями в экземплярах снова и снова. < /P>

Код: Выделить всё

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

можно увидеть в основном чередующиеся пустые строки в файле, правильно итерированные в приведенном выше примере, где бы четыре «сделали это ...» Эхо-Прайты встречаются перед следующей строкой с содержанием.

Подробнее здесь: https://stackoverflow.com/questions/797 ... al-command
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»