У меня есть файл сценария bash для обработки чего-то.Bash Script: выполнить несколько команд в одной строке && получить код возврата
control.sh:
c_command="echo 'Hello'; echo ', Stack Overflow';exit 9";
$c_command;
stat=$?;
if [ $stat -eq 0 ];then
echo 'Do something....'
elif [ $stat -eq 9 ];then
echo 'The system will be rebooting...';
else
echo "..."
fi
Я использую переменную $ c_command, чтобы выполнить команду, и я получаю код завершения 0 не 9. Если я вставить его в командной строке отработаны, но когда я запускаю скрипт очень плохо.
Как правило, когда я выполняю команду «exit» в скрипте, тогда сценарий будет завершен. И я просто хочу, чтобы команда выполнялась не с помощью сценария, и получить код выхода из выполненной команды.
Я решил эту проблему:
Я поставил код в $ c_command в файл сценария и запустить его.
c_command="echo 'Hello'; echo ', Stack Overflow';exit 9";
echo "${c_command}" > tmp.sh;
/bin/bash tmp.sh;
stat=$?;
if [ $stat -eq 0 ];then
echo 'Do something....'
elif [ $stat -eq 9 ];then
echo 'The system will be rebooting...';
else
echo "..."
fi
Когда я запускаю этот скрипт, команды '$ c_command' выполнения штрафа и там статус выхода 0. Вы найдете что вместо этого завершается весь скрипт? Вы действительно запускаете скрипт, который вы вставляете сюда? –
Yep, $ c_command должен быть обратным кодом выхода 9, а не 0, потому что здесь я помещаю код «exit 9». –