Почему bash-скрипт не оставляет код сразу, когда "[: ==: ожидается унарный оператор" - PullRequest
1 голос
/ 26 сентября 2019

Есть ли какой-нибудь способ пропустить ошибки сценария bash и вернуть ненулевой код выхода при ошибке [: ==: unary operator expected?

Я искал в Интернете и пытался добавить set -euxo pipefail, но ни один из этих подходовработать как положено.(Тест на macOS и Linux).

$ ./a.sh
./a.sh: line 4: [: ==: unary operator expected
barfoo
$ echo $?
0
#!/bin/bash
set -euo pipefail
if [  == "foo" ];
then
  echo "foobar"
  exit 1
fi
echo "barfoo"

Bash печатает [: ==: unary operator expected и продолжает выполнение остальной части кода и возвращает 0 в конце.Я уже знаю, как решить проблему «ожидаемого унарного оператора», просто любопытно, что мне следует сделать, чтобы скрипт немедленно вышел с ненулевым кодом.

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 26 сентября 2019

Вы должны увидеть Bash-скрипт в качестве терминала.Если вы откроете терминал и неправильно наберете команду, например, chmox -x <file>, терминал не выйдет, но вместо этого он напечатает предупреждение и останется открытым для продолжения вашей работы.

Вместо ввода лотов и лотовкоманд, вы позволяете Bash выполнять его из файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...