Вопрос довольно прямой. Я могу получить код выхода предыдущей команды с помощью $?
. Но что именно?
Я не думаю, что это переменная, потому что в имени переменной не может быть никаких специальных символов, кроме _
.
foo?foo=10
приведет к ошибке: foo?foo=10: command not found
Так что, если это не переменная, что это? Есть ли другие, как это?
command-line
bash
daltonfury42
источник
источник
Ответы:
Что это такое?
$?
является встроенной переменной, в которой хранится состояние выхода команды, функции или самого скрипта.$?
читает состояние выхода последней выполненной команды. После возврата из функции$?
выдает статус выхода последней команды, выполненной в функции. Это способ Баша дать функциям «возвращаемое значение». Возвращает0
в случае успеха или целое число в диапазоне1 - 255
ошибок.Есть ли другие, как это тоже?
Да, в bash есть несколько таких встроенных переменных. Вы можете увидеть список здесь . См. Http://www.tldp.org/LDP/abs/html/exit-status.html.
источник
dash
,ksh
,zsh
, среди прочих).$status
для той же цели$?
переменная, но особая, поэтому допускаются специальные символы.($?)
Расширяется до состояния выхода последнего выполненного переднего конвейера.Это не единственный, оболочка обрабатывает несколько параметров специально. На эти параметры можно ссылаться только; присвоение им не допускается:
Источники:
источник
"$*"
это не только все позиционные параметры как одно слово, но и все позиционные параметры, разделенные первым символомIFS
как одно слово. Поскольку результат будет подвергаться разбиению поля, если он не заключен в кавычки, эффект как будто$@
используется в кавычках без кавычек.$?
это специальный параметр оболочки (переменная).Как правило, все определяемые пользователем переменные должны быть названы с использованием только символов из класса символов,
[:alnum:]
т. Е.[a-zA-Z0-9_]
(Также не может начинаться с[0-9]
).В двух словах,
$?
это специальная переменная ( а их немало ), которую можно рассматривать как внутреннюю функцию самой оболочки, которая предоставляет код выхода предыдущей команды (независимо от того, выполнена она или нет).Вы можете прочитать это, чтобы получить больше представления о переменных.
источник
$?
это специальная переменная в bash, которая всегда содержит код возврата / выхода последней выполненной команды.Вы можете просмотреть его в терминале, запустив
echo $?
.Коды возврата находятся в диапазоне [0; 255].
Код возврата
0
обычно означает, что все в порядке.Другие значения указывают на ошибки. Большинство приложений возвращают
1
или пользовательские значения. Если команда не найдена, переменная обычно содержит127
Если вы хотите установить для этой переменной определенное значение, вы можете легко сделать это,
bash -c "exit 5"
например, для возврата кода возврата5
.источник
setstatus() { return 5; }