Что это значит в bash-скрипте: «если ! «$ a» функция «$ b» $$ ; тогда»

#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 : значение ! инвертирует значение. Когда вы выполняете a if prog; then , конечно, часть then выполняется, когда код выхода равен 0. Когда, как в нашем случае, у вас есть a if ! prog; then , часть then выполняется, если она отлична от нуля.

3. Совершенно верно, я об этом не думал. Вы должны упомянуть об этом в своем сообщении.