Заставить sh завершиться ошибкой, если команда, заменяющая ее командную строку, не работает - PullRequest
1 голос
/ 17 июня 2020

Я хочу выполнить c bash скрипт из URL.
Я использую sh -c "$(curl -f ${SCRIPT_URL})".
Он работает, но родительский скрипт завершается успешно, если URL-адрес неверен или дочерний скрипт выдает ошибку.

Пример:

set -e
sh -c "$(curl -f ${SCRIPT_URL})"
echo "success"

Я могу получить сообщение об ошибке при использовании дополнительной переменной:

set -e
url=$(curl -f ${SCRIPT_URL})    
sh -c "$url"
echo "success"

Но я не хочу использовать дополнительную переменную. Можно ли обойтись без дополнительной переменной?

1 Ответ

2 голосов
/ 17 июня 2020

Запишите exit 1, если curl завершится неудачно, чтобы sh завершился со статусом 1, а set -e вступил в силу.

set -e
sh -c "$(curl -f "${SCRIPT_URL}" || echo exit 1)"
echo success

Использование переменной или промежуточного файла, и обработка ошибок, не полагаясь на set -e, действительно лучший подход.

...