В чем разница между double-ampersand (&&) и точкой с запятой (;) в Linux Bash?
в чем разница между амперсандом и точкой с запятой в Linux Баш?
например,
$ command1 && command2
vs
$ command1; command2
3 ответов:
The
&&оператор является логическим и оператором: если левая сторона возвращает ненулевое состояние выхода, оператор возвращает это состояние и не оценивает правую сторону (это короткое замыкание), в противном случае он оценивает правую сторону и возвращает ее состояние выхода. Это обычно используется, чтобы убедиться, чтоcommand2работает только еслиcommand1успешно.The
;токен просто разделяет команды, поэтому он будет запускать вторую команду независимо от того, является ли она первой преуспевает.
command1 & & command2
command1 && command2выполняетcommand2если (и только если)command1выполнение завершается успешно. На жаргоне Unix это означает код/код возврата равна нулю.command1; command2
command1; command2выполняетcommand2после выполненияcommand1, последовательно. Не имеет значения, были ли команды успешными или нет.
первый-это простая логика
ANDиспользуя оценку короткого замыкания, последний просто разделяет две команды.что происходит в реальности, когда первая программа возвращает ненулевой код выхода, весь
ANDоценивается вFALSEи вторая команда не будет выполнена. Последний просто выполняет их обоих по порядку.
Comments