В чем разница между double-ampersand (&&) и точкой с запятой (;) в Linux Bash?



в чем разница между амперсандом и точкой с запятой в Linux Баш?



например,



$ command1 && command2


vs



$ command1; command2
495   3  

3 ответов:

The && оператор является логическим и оператором: если левая сторона возвращает ненулевое состояние выхода, оператор возвращает это состояние и не оценивает правую сторону (это короткое замыкание), в противном случае он оценивает правую сторону и возвращает ее состояние выхода. Это обычно используется, чтобы убедиться, что command2 работает только если command1 успешно.

The ; токен просто разделяет команды, поэтому он будет запускать вторую команду независимо от того, является ли она первой преуспевает.

command1 & & command2

command1 && command2 выполняет command2 если (и только если) command1 выполнение завершается успешно. На жаргоне Unix это означает код/код возврата равна нулю.

command1; command2

command1; command2 выполняет command2 после выполнения command1, последовательно. Не имеет значения, были ли команды успешными или нет.

первый-это простая логика AND используя оценку короткого замыкания, последний просто разделяет две команды.

что происходит в реальности, когда первая программа возвращает ненулевой код выхода, весь AND оценивается в FALSE и вторая команда не будет выполнена. Последний просто выполняет их обоих по порядку.

Comments

    Ничего не найдено.