#linux #bash #shell #ubuntu
#linux #bash #оболочка #ubuntu
Вопрос:
Я довольно новичок в написании сценариев bash, до сих пор работаю в основном на python.
Что это означает if ! "$a" function "$b" $$ ; then
именно в bash?
Где
«a» — переменная,
«b» — переменная,
«function» — пользовательская функция
Любая помощь будет оценена.
Спасибо!
Комментарии:
1. Могу ли я предложить вам удалить теги linux и ubuntu , поскольку они не имеют отношения к вашему вопросу?
Ответ №1:
Содержимое переменной a
принимается за команду (либо исполняемый файл, либо функция bash). Эта команда вызывается и получает 3 параметра: слово function
, содержимое переменной b
и PID процесса, выполняющего этот if
-оператор.
После завершения выполнения команды проверяется ее код выхода: если он не равен нулю, then
выполняется часть соединения. Эта интерпретация кода выхода основана на восклицательном знаке ( !
) впереди. В общем:
Если вы напишете команду как
! cmd
и сам cmd выдаст ненулевой код выхода, общий код выхода этого оператора (т. Е. То, Что входит $?
) равен 0. Если сам cmd выдаст нулевой код выхода. общий код выхода равен 1.
Комментарии:
1. Нет : в bash, если команда возвращает НЕ 0, она НЕ выполняет часть «then». 0 означает, что ошибки нет, в то время как другое значение указывает на ошибку. Но на других языках, таких как C, 0 означает сбой, а 1 выполняется правильно.
2. @ATR : значение
!
инвертирует значение. Когда вы выполняете aif prog; then
, конечно, часть then выполняется, когда код выхода равен 0. Когда, как в нашем случае, у вас есть aif ! prog; then
, часть then выполняется, если она отлична от нуля.3. Совершенно верно, я об этом не думал. Вы должны упомянуть об этом в своем сообщении.