Используйте этот тег, Если Ваш вопрос вращается вокруг определения или использования статуса выхода (код возврата) команды. Общий синтаксис включает $? переменная и && и || символы.

Статус выхода является 8-разрядным целочисленным значением, которое возвращено процессом; это является наиболее часто используемым для определения успешности или неуспешности того процесса.

Для дополнительных материалов для чтения посмотрите страницу POSIX на Информации о статусе.

Для запросов статуса выхода новой команды используйте $? переменная.

Для выполнения второй команды, только если первая команда была успешна (возвратил состояние 0) используйте:

command-one && command-two 

Для выполнения второй команды только если первая неудавшаяся команда (возвратил ненулевое состояние) используйте:

command-one || command-two 

Для большего количества примеров см.: Каковы операторы управления и перенаправления оболочки?

5
ответов

Что делает ввод одного восклицательного знака в Bash?

Bash использует восклицательные знаки для раскрытия истории, как описано в ответах на этот вопрос (например, sudo !! запускает предыдущую командную строку с sudo). Однако я не могу найти нигде, что объясняет ...
15.02.2019
5
ответов

Получение функциональных возможностей «гарантировать» / «наконец» в команде оболочки (не сценарии)?

Мне нужно знать, была ли команда выполнена успешно или неудачно, и безоговорочно выполнить некоторую очистку после этого. Ни один из обычных вариантов выполнения последовательных команд здесь не подходит: ...
05.06.2017
4
ответа

Почему определения истинности и ложности в stdbool.h полностью противоположны истине и ложности программ UNIX?

stdbool.h обычно определяется как :#определить ложь 0 #определить true 1 (Исходники :OpenBSD, musl и т. д. )тогда как программа unix false -, которая просто имеет код неудачного состояния, определяется как :инт главная (...
26.03.2021
4
ответа

Bash — выполнить две команды и получить статус выхода 1, если первая не удалась

В приведенном ниже случае команда отчета всегда должна выполняться, но мне нужно получить статус выхода 1, если тестовая команда не удалась: test;report эхо $? 0 Как я могу сделать это в одной строке bash без ...
17.05.2019
4
ответа

Существует ли подобная ping программа, которая возвратит false, когда пакет будет потерян?

я пытаюсь диагностировать сетевую нестабильность на своей домашней LAN - я теряю возможность соединения между своим маршрутизатором и своим кабельным модемом. В моем сценарии оболочки я хотел бы проверить с помощью ping-запросов первый IP-адрес мимо моде
18.07.2018
4
ответа

Как извлечь статус завершения команды в переменную?

Я начал изучать Bash пару дней назад. Я пытаюсь получить статус выхода для выражения grep в такой переменной: check = grep -ci 'text' file.sh, а на выходе я получил "Нет" ...
16.02.2018
4
ответа

Как обнаружить ошибку с помощью подстановки процесса

Этот вопрос похож на следующую ссылку, но сосредоточен на использовании командной строки (bash оболочка). На простом примере при выполнении следующей команды: $ cat <(date); эхо $? Пт, 7 июля, 21: ...
10.07.2017
4
ответа

Код выхода по умолчанию, когда процесс завершается?

Когда процесс уничтожается с управляемым сигналом как SIGINT или SIGTERM, но он не обрабатывает сигнал, каков будет код выхода процесса? Что относительно для неуправляемых сигналов как...
07.09.2016
3
ответа

Передача 'false' не дает не -нулевой код результата

Я понимаю, что это :правда; эхо "$?" #0 ложный; эхо "$?" #1 правда | эхо "$?" #0 Но не это :false | эхо "$?" #0...Почему не печатается 1? И как я мог заставить...
21.04.2020
3
ответа

BASH-скрипт: Попытка получить 3 кода возврата/статуса выхода, чтобы дать мне «глобальный выход»

У меня есть рабочий global_exit, который я откуда-то скопировал, он предназначен для двух выходов команды. Переименование 'echo' в 'ech' для принудительного отказа позволяет мне проверить работу всех перестановок - и они работают здесь: echo "$...
17.04.2020
3
ответа

У меня длинный выполняемый сценарий, но я хочу иметь возможность прокручивать выходные данные stdout, так как он выполняет

У меня есть сценарий, который работает долго. Он имеет много выхода, чтобы stdout, что я хотел бы иметь возможность читать в реальном времени, но и прокручивать вверх и вниз. Всякий раз, когда новая строка вывода...
08.02.2019
3
ответа

Сценарий Bash, выполняемый над SSH, возвращается неверный код выхода 0

Я пытаюсь автоматизировать процесс, который включает в себя управление сценариями на различных машинах через SSH. Крайне важно захватить как вывод, так и код возврата (для обнаружения ошибок). Установка выхода ...
18.12.2018
3
ответа

Какие режимы выхода существуют в shell-скриптинге вообще и в Bash в частности?

Я знаю, что в shell-скриптинге "выход" обычно означает добровольное или, по крайней мере, успешное завершение сеанса (или процесса внутри сеанса) и что существует несколько различных режимов выхода; ...
03.10.2018
3
ответа

Bash: выполненный command2, если command1 перестал работать

Я хочу сделать что-то вроде этого: если успех эха cmd1 && cmd2 еще повторяет сокрушительный провал fi, Как я должен сделать это?
01.09.2017
3
ответа

Возвращать код выхода, не убивая терминал вызывающего пользователя?

У меня возникли трудности с получением возвращаемого значения из скрипта. Сценарий, который доставляет мне проблемы, это second.sh ниже. Но есть взаимодействие со скриптом first.sh, и это ...
09.03.2016
2
ответа

Сценарий оболочки возвращает 0 статус выхода _, несмотря на синтаксическую ошибку

Рассмотрим этот скрипт :#!/bin/sh foo=1 если [[ ! -z $foo ]]; затем эхо abc fi Он использует синтаксис Bash [[... ]], который не работает (как ожидалось ), когда я запускаю его с оболочкой по умолчанию в Ubuntu (...
23.05.2021
2
ответа

лучший диапазон для пользовательского кода выхода в Linux?

Здесь я разрабатываю приложение, которое может завершаться по различным причинам. Каков наилучший диапазон для пользовательского кода выхода (, например 150 -200 )? Я знаю, что это мнение -основано, но все же я хотел узнать...
13.08.2020
2
ответа

возвращаемый код отдельного скрипта, несмотря на то, что они выполняются параллельно

У меня есть файл jar, который выполняется параллельно с несколькими именами таблиц в качестве аргументов с помощью команды nohup в unix. nohup java -jar batchorch.jar $tablename, и я использовал строки ниже для получения...
11.08.2020
2
ответа

Почему я получаю сообщение, что команда не найдена для 'ls' при использовании '$?'?

Проблема назначения :Выполните «хорошо» и «ls» в терминале и проверьте статус выполнения. Что я сделал хорошо;$? выход :zsh :команда не найдена :хорошо zsh :команда не найдена :127 ls;$? выход :викторина.ш зш :...
16.07.2020
2
ответа

Сбой сценария при сбое команды, но в любом случае запускать все команды

В скрипте есть несколько команд, которые мне нужно запустить, это специальный линтер для исходного кода. При каждом запуске генерируется отчет и происходит сбой с кодом выхода 1 в случае нарушения правил. Мне нужно выполнить все команды...
06.07.2020
2
ответа

Можно ли использовать оператор && в цикле шаблонов команд терминала?

Я хотел сделать список похожих четких команд более понятным для чтения, поэтому я сделал небольшой терминальный цикл для того, что в \cache\thumbs\ ; сделать мой шаблон $what:clear; done Это прекрасно работает, однако...
23.09.2019
2
ответа

Как зациклиться 3 раза в сценарии bash, если не удается выполнить отправку докера?

У меня есть bash-скрипт, в котором docker просто отправляет изображение: docker push $CONTAINER_IMAGE:latest Я хочу зациклиться 3 раза, когда это не удается. Как мне этого добиться?
11.07.2019
2
ответа

Статус выхода последней команды с помощью PROMPT_COMMAND

Я хочу сохранить статус выхода последней выполненной команды (в файле, в переменной, это не имеет особого значения), но это должно быть сделано автоматически в интерактивная оболочка, запуск чего-то вручную...
18.05.2019
2
ответа

Почему echo$?' возвращает 0, хотя ожидается 1?

Для следующей программы я получаю 0 вместо echo$? хотя я ожидаю 1. int main() { вернуть 1; }
25.04.2019
2
ответа

Почему я не могу получить вывод pgrep прямо для переменной в сценарии bash?

Я пытаюсь создать сценарий, чтобы либо выйти из compton, если он работает, либо запустить его, если он не работает. Я прочитал от человека, что он должен выйти из 1, если процесс найден, поэтому я попытался создать сценарий, который ...
20.03.2019
2
ответа

Как проверить код выхода команды внутри, если утверждение

Я пытаюсь вернуть код выхода 0, если команда выходит с кодом 143 (таймаут, из "команды таймаута"), 1 в противном случае. В связи с внешним ограничением (CI скрипт), я должен запустить команду и сделать ...
09.03.2019
2
ответа

Bash Script Function Return True-False

Я хочу запросить функцию, вернув значение. Мои коды следующие; check () {file = / root / Turkiye.txt local funkx = $ 1 при чтении строки; do if ["$ line" == "$ funkx"] ...
28.02.2019
2
ответа

Как запустить несколько процессов и выхода, если кто-либо из них выходит или не удается

, я использую несколько процессов и хочу выйти с соответствующим кодом выхода (это означает ошибку в случае сбоя, успех иначе), если кто-либо из них не удается или существует. Кроме того, если любой ребенок ...
11.12.2018
2
ответа

Killallow для этого терминала только

при отладке я часто использую Killinall, чтобы убить процесс. Это действительно плохое привычка, потому что в системе может быть больше процессов, запускающих то же имя. Обычно процесс, который я хочу убить, это ...
22.11.2018
2
ответа

LS Код ошибки 2

Я читал человека LS и в конце концов, он рассказывает о состоянии выхода LS. Он говорит: выйти из статуса: 0, если в порядке, 1, если незначительные проблемы (например, не могут получить доступ подкаталога), 2, если ...
24.10.2018