Назад | Перейти на главную страницу

Как назначить переменную в bash без использования $?

Есть ли более простой / элегантный способ присвоить возвращаемое значение переменной? До сих пор я делал что-то вроде:

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=$?. Вы могли бы сделать его двухстрочной функцией, но я не рекомендую ее, потому что это сделает ваши скрипты менее читаемыми (еще одна вещь, которую нужно научиться понимать, чтобы понимать ваш код).