Мой сценарий bash (init.sh
) вызывает другой скрипт (script.sh
), и я хочу проверить код ошибки от script.sh
перед выполнением дальнейших действий в init.sh
.
Я думал о тестировании его $?
, но он не работаетВ сценарии bash введите код ошибки из вызванного сценария
Мои init.sh
, как следующее:
#!/bin/bash
set -e
echo "Before call"
docker run -v $PWD:/t -w /t [command]
if [ $? == 1 ]; then
echo "Issue"
fi
echo "After call"
я получил только Before call
от stdout
и не After call
.
Я знаю, за то, что если я исполню docker run -v $PWD:/t -w /t [command]
наедине с неправильными аргументами, то echo $?
будет правильно отображать 1.
Я думал, что я не улавливаю код выхода из scrip.sh
, но откуда-то еще.
Любые идеи?
Это запутанно ... вы упоминаете 'script.sh', но не называете его в' init.sh'. Во всяком случае, вы можете попробовать запустить bash -x init.sh' и посмотреть, что он на самом деле делает. – gilez
С 'set -e', если вызов' docker' * устанавливает * $? 'В 1, ваш скрипт будет завершен до выполнения оператора' if', не говоря уже о последнем вызове 'echo'. – chepner