У меня есть скрипт bash с такими функциями:
GetData () {
set -e
wget -P /temp http://google.com/foooo.tar.gz
wget -P /temp http://google.com/barrr.tar.gz
}
Я выполняю их как:
if ! GetData ; then
echo "My error description(eg. GetData error)"
exit 1;
fi
Если я передам неверный URL-адрес wget, он напечатает: 2019-03-12 10:07:06 ERROR 404: Not Found.
Но скрипт не завершается в этот момент. Как сделать так, чтобы скрипт завершал работу в случае ошибки в функции? Я пробовал set -e
Не получилось.
wget
.if ! wget ....; then return 1; fi; if ! wget ...; then return 1; fi
. В противном случае они игнорируются. Или используйтеset -e
. - person KamilCuk   schedule 12.03.2019wget ... || return 1
. - person melpomene   schedule 12.03.2019$installDir
и$source1URL
и$source2URL
не ставятся, это не один скрипт, аset -e
я нигде не вижу. - person melpomene   schedule 12.03.2019some commands...
, я имею в виду, что их может быть несколько. Это единственный способ выполнить каждую команду с оператором if? - person Mugen   schedule 12.03.2019set -e
, и, как я сказал, вы также можете использовать||
. - person melpomene   schedule 12.03.2019set -e
все еще не выходит - person Mugen   schedule 12.03.2019set -e
не распространяется на функции оболочки, вам нужно сделатьset -E
вне функции - person Inian   schedule 12.03.2019if ! GetData ;
игнорируетset -e
, поскольку оно находится в проверенном контексте. - person melpomene   schedule 12.03.2019