Есть ли более простой / элегантный способ присвоить возвращаемое значение переменной? До сих пор я делал что-то вроде:
some_command_to_run
VAR_TO_SET=$?
Но я бы предпочел, чтобы все это было в одной строке и желательно без использования $? переменная. Кто-нибудь знает как?
У меня вопрос «Почему?». Это средство, предоставляемое Bash для выполнения этой функции.
Однако вы можете сделать это (в дополнение к тому, что показали Кайл и Жиль):
do_something && do_on_success || do_on_failure
Это все, что я знаю. Однако, если вы просто делаете это многократно, чтобы увидеть, была ли команда успешной, с чем-то вроде:
if [[ $? -ne 0 ]]; then
...
fi
На самом деле вы можете просто протестировать каталог команд, например:
if ! mkdir foo; then
...
fi
Возможно, вы уже знали об этом, но поняли мощь помочь тебе :-)
Это все, что есть. Если вы действительно хотите, чтобы это было в одной строке, вы можете написать some_command_to_run; VAR_TO_SET=$?
. Вы могли бы сделать его двухстрочной функцией, но я не рекомендую ее, потому что это сделает ваши скрипты менее читаемыми (еще одна вещь, которую нужно научиться понимать, чтобы понимать ваш код).