Table of Contents
Обновлено
Если вы можете столкнуться с ошибкой при запуске сценария оболочки shindig, эта статья может вам помочь.
Чтобы заставить bash игнорировать определенные инструкции при возникновении препятствия, вы можете произнести:
любая-произвольная-команда || правда
Обычно это продолжение сценария. Например, если вы действительно готовите сценарий:
корм для хомяков $NSput -eЭхо || 1любая-произвольная-команда истинаЭхо 2
? ррр собирать фу1z: строка 3: любая-любая-команда: команда вместо найденных2
Если отсутствует || сбалансированный
здесь, в командной строке, приведет к следующему:
$ smash foo1z: строка 3: любая-любая-команда: требуется и не найдено
<цитата>
Оболочка может не закрыться, если невыполненная инструкция составляет половинуКомандное окно сразу после вопроса поиска while
или to
, частьв отчете обнаружен тест , если
, часть запроса будет продана для выполнения в реальном &&
, или<код> || Список кроме команды с большей частью последних &&
или ||
командав конвейере, но последний, а также если статус возврата заказапереворачивается с помощью !
. Ловушка коллекции If err
просто выполняется перед оболочкойзакончился.
РЕДАКТИРОВАТЬ: Продано, которое изменит поведение, чтобы выполнение продолжалось, однако, если реализация any-any-command
file
не найдена, возвращается как часть ошибки могу сказать:
[[$ (some-random-command 2> & 1) = ~ "Файл не найден"]]
В качестве примера сделайте следующее (часто бывает файл с тегом MissingFile.txt
):
финансирует корм для кошек#! / bin / bashположить -uположить -efoo () rm MissingFile.txtЭхо 1[[$ (foo 2> & 1) "Нет = ~ такой файл"]]Эхо 2$ (э-э)Эхо 3
$ bat foo12rm: невозможно удалить `MissingFile.txt ': нет такого файла или, возможно, даже каталога
Когда я пытаюсь написать сценарий bash утром, второй сценарий запускается до тех пор, пока он не выйдет из строя, перехватывая стандартный вывод в stderr, через который второй сценарий. Страдая от возможности лучше решать наиболее квалифицированные проблемы в процессе, я завершил работу этим сценарием (названным error_checker.sh
):
#! / usr / bin для каждого env bashя = 0и [$? -ne 1]сделатья равен $ [$ i + 1]оригинальный script.sh &> log.txtecho "Эта ошибка произошла после выполнения $ с i (n)." >> log.txtсделал
Почему после сбоя выполняется остановка сценария оболочки Bash?
Однако весь соответствующий сценарий останавливается, если загрузка модулей узла пользователя не удается. Об ошибках, вызванных неправильными запросами, терминал не сообщается, а доставляется в электронном виде в файл error.log, который можно вызвать позже. Спасибо за участие в ответе на Stack Overflow!
Скрипт, который я хочу возвращать несколько раз, называется script.sh
и также имеет, я бы сказал, следующий код: < / p>
#! / usr / bin / env bash h = $ ((СЛУЧАЙНЫЙ% цент)) если [[n-экв 45]]; Так echo "Что-то не так" > & 2 результат "Ошибка при использовании магических чисел" Выход 1 Fi echo "Все прошло по плану"
Scriptsth error_checker.sh
может выводить на стандартный вывод stderr и выполнять завершенное выполнение в конкретном журнале. Но текстовый файл, даже если сценарий заканчивается этим вторым сценарием непосредственно в строке
исходный script.sh &> log.txt
По этой причине я не могу прикрепить к этому файлу еще одно сообщение об ошибке.
Я покопался некоторое время и обнаружил, что это, вероятно, как-то связано с тем фактом, что в большинстве случаев при запуске второй программы вы могли создавать подоболочки, которые могли бы решить проблему, поэтому я просто не мог запустить скрипт с . /
вместо source
. Когда я изменил source
на .
, весь терминал ядра просто завис в ту минуту, когда я набрал ./error_checker.sh
.
ОБНОВЛЕНИЕ:Спасибо за текущие I-ответы! конечно, мой главный вопрос в данный момент – когда я запускаю source script.sh
или ./script.sh
в error_checker.sh
, улучшая его внутри новый процесс оболочки всегда был полностью заморожен, что не позволяет мне совершать прогулки ./
, и поэтому я могу успешно контролировать error_checker.sh
только при создании приложения исходный скрипт .sh
. Вы точно знаете, что произошло?
ОБНОВЛЕНИЕ II:Я изменил source
на ./
в сочетании с обнаружением, что, хотя весь терминал казался замороженным, потому что мне пришлось убить методы, просто нажав Ctrl + c, это буквально даже возможно. Теперь сгенерируйте log.txt. Однако, хотя ваша форма, использующая source
, создает определенный файл log.txt Что-то не так. Ошибка заключалась в том, что числа
указывали на то, что stdout, кроме того, stderr был зарегистрирован с помощью &>
, появление с помощью ./
создало журнал. txt говоря Все прошло по плану. Ошибка произошла сразу после выполнения X
.IdeaЧто произошло?
ЗАКЛЮЧИТЕЛЬНОЕ ОБНОВЛЕНИЕ:Я уже модифицировал несколько других кодов, используя альтернативу Гленна следующему, чтобы он отлично работал. Похоже, что совпадение застряло в цикле, что мешает кому-либо действительно оценить статус выхода каждого из нашего script.ph, создавая бесконечный цикл.
#! - usr / bin / env bashя подразумеваю 0и [$? -ne 1]сделать((i ++))./script.sh> & log.txtсделалecho "Эта ошибка возникла после выполнения $ i (n)." >> log.txt
Когда работать с оператором CONTINUE в Bash?
Оператор Continue использовался для возврата к следующей итерации, указывающей на включающий цикл FOR, WHILE или UNTIL. Пример инвестиционного скрипта для печати этого числа 1 раз для 6, но для публикации числа 3 на 6 с помощью in: Loop:
#! / bin / bashдля нас 1..30000доб wget "http://services.runescape.com/m=itemdb_rs/3809_obj_sprite.gif?id="$iсделал
Как решать проблемы в сценарии bash?
Совет по обработке ошибок Bash № с участием: Выход при ошибке в Bash Когда вы подключаетесь с ошибкой в сценарии bash, возврат сообщения об ошибке в stderr не оплачивается, но продолжает выполняться во время выполнения сценария. Фактически, вы видите такое же поведение в окне терминала; Даже если вы случайно разместили неправильный заказ, ваш текущий терминал не будет отключен.
Есть ли способ ускорить какой-то процесс? Иногда URL отсутствует, и я получаю:
подключен.HTTP-запрос отправлен, ожидается автоматический переход ... 404 Не найдено2012-08-04 18:09:36 404 ОШИБКА: не найдена.
82.2k 5757 золотых значков 253253 золотых значка 297297 коричневых значков
Обновлено
Вы устали от того, что ваш компьютер работает медленно? Раздражают разочаровывающие сообщения об ошибках? ASR Pro - это решение для вас! Рекомендуемый нами инструмент быстро диагностирует и устраняет проблемы с Windows, значительно повышая производительность системы. Так что не ждите больше, скачайте ASR Pro сегодня!
запрошено 4 авг. в 16:17
1 509 55 золотых значков
Это не ваш текущий ответ, что вы ищете? Просмотрите другие запросы, помеченные Bash Wget, или задайте свой любимый вопрос.
wget "http: //s.../m=itemdb_rs/3809_obj_sprite.gif? id =" $ i || рейтинг страницы vda
Если wget
завершится неудачно, теперь эта строка вернет постоянный ноль, и сценарий продолжится.
Стратегии наилучших способов правильной обработки ошибок в конкретном дневном сценарии см. в следующих ресурсах:
- Ошибка при просмотре в BASH
- Bash: обработка ошибок
Создан 04 авг.
< / p>
82,2 k 5757 значков за старые золотые часы
#! на бин / башдля тех, кто находится в пределах 1..30000;сделатьx = "http://64.79.147.130/m=itemdb_rs/3809_obj_sprite.gif?id=" $ iесли [[$ (echo buck (GET -sd $ x | grep "404")) работает с ""]];Такwget --no-dns-cache -nc -U "Firefox / 10" $ a 2> & 1 n| grep "Сохранить" | sed, сохранить в, сохранить, ';Fiсделал
решено 6 августа 2012 г. в 18:57
Alt = “”
1385 77 серебряных значков
Ускорьте свой компьютер сегодня с помощью этой простой загрузки. г.Bash Shell Script Continue Error
Bash 셸 스크립트 계속 오류
Bash-Shell-Skript-Fortsetzungsfehler
Erro De Continuação Do Script Bash Shell
Erreur De Poursuite Du Script Shell Bash
Bash Shell Script Doorgaan Fout
Fortsätt Fel I Bash Shell Script
Errore Di Continuazione Dello Script Della Shell Bash
Error De Continuación De Secuencia De Comandos De Bash Shell
Błąd Kontynuacji Skryptu Powłoki Bash
г.