Я вижу, что у вас уже есть ответ, но я вижу, что между пользователями существуют разногласия, что эта карта не поддерживается. Вот доказательство того, что у меня для некоторых пользователей, что карта действительно работает.
Но это не доказательство того, что он будет работать во всех отношениях. Это доказывает, что он МОЖЕТ работать больше всего на свете. У меня тоже не было проблем с этим.
С этой строкой:
command1 && command2
command2 будет выполняться, если (и только если) command1 возвращает статус завершения, но в этой строке:
command1 ; command2
обе команды1 и command2 будет выполняться независимо. Точка с запятой позволяет вводить много команд в одной строке.
с этой линии:
command1 && command2
команда2 будет выполняться, если (и только если) команда1 возвращает статус выхода ноль, а в этой строке:
command1 ; command2
обе команды команда1 и команда2 будет выполняться независимо. Точки с запятой позволяет вводить несколько команд в одной строке.
с этой линии:
command1 && command2
команда2 будет выполняться, если (и только если) команда1 возвращает статус выхода ноль, а в этой строке:
command1 ; command2
обе команды команда1 и команда2 будет выполняться независимо. Точки с запятой позволяет вводить несколько команд в одной строке.
С этой строкой:
command1 && command2
command2 будет выполняться, если (и только если) command1 возвращает статус завершения, но в этой строке:
command1 ; command2
обе команды1 и command2 будет выполняться независимо. Точка с запятой позволяет вводить много команд в одной строке.
с этой линии:
command1 && command2
команда2 будет выполняться, если (и только если) команда1 возвращает статус выхода ноль, а в этой строке:
command1 ; command2
обе команды команда1 и команда2 будет выполняться независимо. Точки с запятой позволяет вводить несколько команд в одной строке.
С этой строкой:
command1 && command2
command2 будет выполняться, если (и только если) command1 возвращает статус завершения, но в этой строке:
command1 ; command2
обе команды1 и command2 будет выполняться независимо. Точка с запятой позволяет вводить много команд в одной строке.
С помощью этой строки:
command1 & amp; & amp; & amp; command2
command2 будет выполняться, если (и только если) command1 возвращает статус завершения 0, тогда как в этой строке:
command1; command2
обе команды 1 и command2 будут выполняться независимо. Точка с запятой позволяет вам вводить много команд в одной строке.
С помощью этой строки:
command1 & amp; & amp; & amp; command2
command2 будет выполняться, если (и только если) command1 возвращает статус завершения 0, тогда как в этой строке:
command1; command2
обе команды 1 и command2 будут выполняться независимо. Точка с запятой позволяет вам вводить много команд в одной строке.
С помощью этой строки:
command1 & amp; & amp; & amp; command2
command2 будет выполняться, если (и только если) command1 возвращает статус завершения 0, тогда как в этой строке:
command1; command2
обе команды 1 и command2 будут выполняться независимо. Точка с запятой позволяет вам вводить много команд в одной строке.
С помощью этой строки:
command1 & amp; & amp; & amp; command2
command2 будет выполняться, если (и только если) command1 возвращает статус завершения 0, тогда как в этой строке:
command1; command2
обе команды 1 и command2 будут выполняться независимо. Точка с запятой позволяет вам вводить много команд в одной строке.
С помощью этой строки:
command1 & amp; & amp; & amp; command2
command2 будет выполняться, если (и только если) command1 возвращает статус завершения 0, тогда как в этой строке:
command1; command2
обе команды 1 и command2 будут выполняться независимо. Точка с запятой позволяет вам вводить много команд в одной строке.
Вы можете попробовать разницу для себя:
ls /invalid/path && echo "hello!", так как / invalid / path не существует, ls не может показать вам список каталогов. Он выйдет из строя с сообщением об ошибке: «ls: / invalid / path: Нет такого файла или каталога». Вторая половина команды (эхо «привет!») Даже не выполняется, потому что первая половина не удалась. ls /invalid/path ; echo "hello!" Такое же сообщение об ошибке появляется, как и раньше, но на этот раз выполняется вторая часть! ls: / invalid / path: Нет такого файла или каталога привет!Почему это полезно? Предположим, вы хотите извлечь файл с именем archive.tar.gz. Вы можете использовать команду tar zxvf archive.tar.gz && rm archive.tar.gz. Если по какой-либо причине извлечение архива не выполняется, вторая часть не выполняется! Вы можете попробовать еще раз.
Если вы используете; в той же ситуации архив удаляется, и вы не можете повторить попытку.
&& - AND, что означает, что вторая команда будет выполняться только в том случае, если первая возвращает true (нет ошибок).
Обновление: я добавил как скрипт, чтобы увидеть некоторые из возможных ловушек:
Поскольку никто не упомянул «||», я
Обновить : некоторые важные переформулировки здесь & amp; & amp; как «то» выражения «if», которое отвечает «true»
|| НЕ нравится «else» в статусе «если» .. || как «then» выражения «if», которое отвечает на «false»
Более конкретно, & amp; & amp; тестирует $? возвращаемое значение предыдущего оператора NOT и передает управление оператору или подколе, непосредственно следуя за & amp; & amp; ... он передает только управление, если $? правда.
|| аналогичен, и его часто видно после & amp; & amp; , но он проверяет ложное возвращаемое значение ($?) из предыдущей предыдущей инструкции ... NB !, Nota Bene! Заметьте, хорошо! .... если инструкция preecing является & amp; & amp; оператор, который возвращает false, когда вы ожидаете, что он будет истинным, тогда || будет реагировать на ложное, поэтому смешение на одной линии может быть рискованным
. Основная мысль, которую я пытаюсь сделать, связана с ошибкой, которую я сделал. т.е.: ## [[condition]] & amp; & amp; & amp; A || B false не ведет себя как тройной стиль C / C ++. т.е.: // (условие)? A: B См. Сценарий ниже для примеров «неожиданных» результатов от «A»
. Основной тест и & amp; & amp; и || оператор должен быть в одной строке ...
Запустите этот скрипт, чтобы увидеть, что может случиться с ошибками при использовании & amp; & amp; & amp; и || Самый последний выполненный оператор может быть не таким, которого вы ожидаете ..
[[condition]] & amp; & amp; & amp; & amp; & amp; echo Hello || echo Goodbye .... обычно безопасно, потому что хорошо сформированное эхо возвращает true. , но как насчет доступа к файлу, который не выходит?
#!/bin/bash
#
# "as expected" return codes" means: expected to behave like a normal AND / OR contition test
#
if [[ "$1" != "" ]] ; then exit $1; fi # recursive call to return an arbitary $? value (decimal)
echo
echo 'test 1: All return codes are "as expected"'
echo ======
((1==1)) && echo " ((1==1)) rc=$? ..&&.. condition is true" || echo " ((1==1)) rc=$? ..||.. condition is false"
$0 0 && echo " \$0 0 rc=$? ..&&.. condition is true" || echo " \$0 0 rc=$? ..||.. condition is false"
((1!=1)) && echo " ((1!=1)) rc=$? ..&&.. condition is true" || echo " ((1!=1)) rc=$? ..||.. condition is false"
$0 1 && echo " \$0 1 rc=$? ..&&.. condition is true" || echo " \$0 1 rc=$? ..||.. condition is false"
echo
echo 'test 2: Now throw in some "unexpected" errors into the first of the &&/|| pair'
echo ======
((1==1)) && (echo " ((1==1)) rc=$? ..&&.. condition is true"; $0 1) || echo " ((1==1)) rc=$? ..||.. condition is false"
$0 0 && (echo " \$0 0 rc=$? ..&&.. condition is true"; $0 2) || echo " \$0 0 rc=$? ..||.. condition is false"
((1!=1)) && (echo " ((1!=1)) rc=$? ..&&.. condition is true"; $0 3) || echo " ((1!=1)) rc=$? ..||.. condition is false"
$0 1 && (echo " \$0 1 rc=$? ..&&.. condition is true"; $0 4) || echo " \$0 1 rc=$? ..||.. condition is false"
echo
echo 'test 3: Now swap the order of && and || statements, using "as expected" return codes'
echo ======
((1==1)) || echo " ((1==1)) rc=$? ..||.. condition is true" && echo " ((1==1)) rc=$? ..&&.. condition is false"
$0 0 || echo " \$0 0 rc=$? ..||.. condition is true" && echo " \$0 0 rc=$? ..&&.. condition is false"
((1!=1)) || echo " ((1!=1)) rc=$? ..||.. condition is true" && echo " ((1!=1)) rc=$? ..&&.. condition is false"
$0 1 || echo " \$0 1 rc=$? ..||.. condition is true" && echo " \$0 1 rc=$? ..&&.. condition is false"
echo
echo 'test 4: With the order of && and || statements still swapped, introduce "unexpected" errors into the first of the &&/|| pair'
echo ======
((1==1)) && (echo " ((1==1)) rc=$? ..&&.. condition is true"; $0 1) || echo " ((1==1)) rc=$? ..||.. condition is false"
$0 0 && (echo " \$0 0 rc=$? ..&&.. condition is true"; $0 2) || echo " \$0 0 rc=$? ..||.. condition is false"
((1!=1)) && (echo " ((1!=1)) rc=$? ..&&.. condition is true"; $0 3) || echo " ((1!=1)) rc=$? ..||.. condition is false"
$0 1 && (echo " \$0 1 rc=$? ..&&.. condition is true"; $0 4) || echo " \$0 1 rc=$? ..||.. condition is false"
exit
try
false && echo "hello"и
false ; echo "hello"видеть разницу
Команда (функция, в случае скрипта) после && выполняется в зависимости от RETVAL первой команды (функция, в случае скрипта). Это приводит к тому, что первая команда вернет значение 0, если оно будет успешным. Мы можем проверить возвращаемое значение для выполнения дальнейших команд.
Вы можете попробовать разницу для себя:
ls /invalid/path && echo "hello!" с /недопустимый/пути не существует, ЛС не могу показать вам каталог. Он завершится с сообщением об ошибке: "ЛС: /недопустимый/путь: нет такого файла или каталога". Вторая половина команды (echo "привет!") даже никогда не выполняются, потому что в первом тайме не удалось. ls /invalid/path ; echo "hello!" появляется то же сообщение об ошибке, как и раньше, но на этот раз, вторая часть выполняется! ЛС: /недопустимый/путь: нет такого файла или каталога Здравствуйте!почему это полезно? Предположим, вы хотите извлечь файл с названием archive.tar.gz можно использовать команду tar zxvf archive.tar.gz && rm archive.tar.gz. Если по какой-либо причине извлечения из архива не удалась, вторая часть не исполняется! Вы можете снова попробовать.
если вы используете ; в таком же положении, архив будет удален и Вы не можете снова попробовать.
: я добавил в скрипт highight некоторые из возможных ловушек:
потому что никто не упомянул "||", я
обновление: некоторые важные ре-формулировка здесь && как "тогда" на "если" заявление, которое реагирует на "истинный"
|| не нравится "еще" "если" заявление.. | | - как "тогда" на "если" заявление, которое реагирует на "ложные"
более разработан, && тестирует $? возвращаемое значение предыдущий не заявление и передает управление оператору или суб-оболочки сразу после &&... он только передает управление, если $? это правда.
|| аналогично, и часто видел после && заявлением, но тесты на ложь возвращаемое значение ($?) от предыдущие самого последнего выполненного оператора... НБ!, Нота Бене! Обратите внимание!.... если утверждение вышестоящего представляет собой && оператор, который возвращает значение false, когда вы ожидаете, чтобы быть правдой, то || будет отвечать на ложь, поэтому смешивать на одной линии может быть рискованным
[dиода d17]основная мысль, которую я пытаюсь сделать это в связи с ошибкой, которую я совершил. т. е.: ## [[условие]] && А || Б ложным не ведет себя как C/С++ стиль троичной. т. е.: // (состояние) ? А : Б см. скрипт ниже для примеров "неожиданных" результатов от "А" [!dиода d17]базовый тест и && и || утверждение все должны быть на одной линии...
Запустите этот скрипт, чтобы увидеть, где вещи могут пойти не так, когда с помощью && и || последняя выполненная инструкция не может быть тот, кого ты ждешь..
[[ условие]] && echo Привет || Эхо Прощай .... обычно безопасный, потому что хорошо сформированный Эхо возвратит True. а как насчет доступа к файлу, который не выходит?
#!/bin/bash
#
# "as expected" return codes" means: expected to behave like a normal AND / OR contition test
#
if [[ "$1" != "" ]] ; then exit $1; fi # recursive call to return an arbitary $? value (decimal)
echo
echo 'test 1: All return codes are "as expected"'
echo ======
((1==1)) && echo " ((1==1)) rc=$? ..&&.. condition is true" || echo " ((1==1)) rc=$? ..||.. condition is false"
$0 0 && echo " \$0 0 rc=$? ..&&.. condition is true" || echo " \$0 0 rc=$? ..||.. condition is false"
((1!=1)) && echo " ((1!=1)) rc=$? ..&&.. condition is true" || echo " ((1!=1)) rc=$? ..||.. condition is false"
$0 1 && echo " \$0 1 rc=$? ..&&.. condition is true" || echo " \$0 1 rc=$? ..||.. condition is false"
echo
echo 'test 2: Now throw in some "unexpected" errors into the first of the &&/|| pair'
echo ======
((1==1)) && (echo " ((1==1)) rc=$? ..&&.. condition is true"; $0 1) || echo " ((1==1)) rc=$? ..||.. condition is false"
$0 0 && (echo " \$0 0 rc=$? ..&&.. condition is true"; $0 2) || echo " \$0 0 rc=$? ..||.. condition is false"
((1!=1)) && (echo " ((1!=1)) rc=$? ..&&.. condition is true"; $0 3) || echo " ((1!=1)) rc=$? ..||.. condition is false"
$0 1 && (echo " \$0 1 rc=$? ..&&.. condition is true"; $0 4) || echo " \$0 1 rc=$? ..||.. condition is false"
echo
echo 'test 3: Now swap the order of && and || statements, using "as expected" return codes'
echo ======
((1==1)) || echo " ((1==1)) rc=$? ..||.. condition is true" && echo " ((1==1)) rc=$? ..&&.. condition is false"
$0 0 || echo " \$0 0 rc=$? ..||.. condition is true" && echo " \$0 0 rc=$? ..&&.. condition is false"
((1!=1)) || echo " ((1!=1)) rc=$? ..||.. condition is true" && echo " ((1!=1)) rc=$? ..&&.. condition is false"
$0 1 || echo " \$0 1 rc=$? ..||.. condition is true" && echo " \$0 1 rc=$? ..&&.. condition is false"
echo
echo 'test 4: With the order of && and || statements still swapped, introduce "unexpected" errors into the first of the &&/|| pair'
echo ======
((1==1)) && (echo " ((1==1)) rc=$? ..&&.. condition is true"; $0 1) || echo " ((1==1)) rc=$? ..||.. condition is false"
$0 0 && (echo " \$0 0 rc=$? ..&&.. condition is true"; $0 2) || echo " \$0 0 rc=$? ..||.. condition is false"
((1!=1)) && (echo " ((1!=1)) rc=$? ..&&.. condition is true"; $0 3) || echo " ((1!=1)) rc=$? ..||.. condition is false"
$0 1 && (echo " \$0 1 rc=$? ..&&.. condition is true"; $0 4) || echo " \$0 1 rc=$? ..||.. condition is false"
exit
попробовать
false && echo "hello"и
false ; echo "hello"вижу разницы
команда (функция, в случае скрипта) после && выполняется в зависимости от РАТАВАЛІ первой команды (функция, в случае скрипта). Его сил первая команда возвращает значение 0, В случае успеха. Мы можем проверить возвращаемое значение для выполнения дальнейших команд.
&& и AND, это означает, что вторая команда будет выполняться только если первый вернулся верно (без ошибок).
Вы можете попробовать разницу для себя:
ls /invalid/path && echo "hello!" с /недопустимый/пути не существует, ЛС не могу показать вам каталог. Он завершится с сообщением об ошибке: "ЛС: /недопустимый/путь: нет такого файла или каталога". Вторая половина команды (echo "привет!") даже никогда не выполняются, потому что в первом тайме не удалось. ls /invalid/path ; echo "hello!" появляется то же сообщение об ошибке, как и раньше, но на этот раз, вторая часть выполняется! ЛС: /недопустимый/путь: нет такого файла или каталога Здравствуйте!почему это полезно? Предположим, вы хотите извлечь файл с названием archive.tar.gz можно использовать команду tar zxvf archive.tar.gz && rm archive.tar.gz. Если по какой-либо причине извлечения из архива не удалась, вторая часть не исполняется! Вы можете снова попробовать.
если вы используете ; в таком же положении, архив будет удален и Вы не можете снова попробовать.
Обновление: я добавил как скрипт, чтобы увидеть некоторые из возможных ловушек:
Поскольку никто не упомянул «||», я
Обновить : некоторые важные переформулировки здесь & amp; & amp; как «то» выражения «if», которое отвечает «true»
|| НЕ нравится «else» в статусе «если» .. || как «then» выражения «if», которое отвечает на «false»
Более конкретно, & amp; & amp; тестирует $? возвращаемое значение предыдущего оператора NOT и передает управление оператору или подколе, непосредственно следуя за & amp; & amp; ... он передает только управление, если $? правда.
|| аналогичен, и его часто видно после & amp; & amp; , но он проверяет ложное возвращаемое значение ($?) из предыдущей предыдущей инструкции ... NB !, Nota Bene! Заметьте, хорошо! .... если инструкция preecing является & amp; & amp; оператор, который возвращает false, когда вы ожидаете, что он будет истинным, тогда || будет реагировать на ложное, поэтому смешение на одной линии может быть рискованным
. Основная мысль, которую я пытаюсь сделать, связана с ошибкой, которую я сделал. т.е.: ## [[condition]] & amp; & amp; & amp; A || B false не ведет себя как тройной стиль C / C ++. т.е.: // (условие)? A: B См. Сценарий ниже для примеров «неожиданных» результатов от «A»
. Основной тест и & amp; & amp; и || оператор должен быть в одной строке ...
Запустите этот скрипт, чтобы увидеть, что может случиться с ошибками при использовании & amp; & amp; & amp; и || Самый последний выполненный оператор может быть не таким, которого вы ожидаете ..
[[condition]] & amp; & amp; & amp; & amp; & amp; echo Hello || echo Goodbye .... обычно безопасно, потому что хорошо сформированное эхо возвращает true. , но как насчет доступа к файлу, который не выходит?
#!/bin/bash
#
# "as expected" return codes" means: expected to behave like a normal AND / OR contition test
#
if [[ "$1" != "" ]] ; then exit $1; fi # recursive call to return an arbitary $? value (decimal)
echo
echo 'test 1: All return codes are "as expected"'
echo ======
((1==1)) && echo " ((1==1)) rc=$? ..&&.. condition is true" || echo " ((1==1)) rc=$? ..||.. condition is false"
$0 0 && echo " \$0 0 rc=$? ..&&.. condition is true" || echo " \$0 0 rc=$? ..||.. condition is false"
((1!=1)) && echo " ((1!=1)) rc=$? ..&&.. condition is true" || echo " ((1!=1)) rc=$? ..||.. condition is false"
$0 1 && echo " \$0 1 rc=$? ..&&.. condition is true" || echo " \$0 1 rc=$? ..||.. condition is false"
echo
echo 'test 2: Now throw in some "unexpected" errors into the first of the &&/|| pair'
echo ======
((1==1)) && (echo " ((1==1)) rc=$? ..&&.. condition is true"; $0 1) || echo " ((1==1)) rc=$? ..||.. condition is false"
$0 0 && (echo " \$0 0 rc=$? ..&&.. condition is true"; $0 2) || echo " \$0 0 rc=$? ..||.. condition is false"
((1!=1)) && (echo " ((1!=1)) rc=$? ..&&.. condition is true"; $0 3) || echo " ((1!=1)) rc=$? ..||.. condition is false"
$0 1 && (echo " \$0 1 rc=$? ..&&.. condition is true"; $0 4) || echo " \$0 1 rc=$? ..||.. condition is false"
echo
echo 'test 3: Now swap the order of && and || statements, using "as expected" return codes'
echo ======
((1==1)) || echo " ((1==1)) rc=$? ..||.. condition is true" && echo " ((1==1)) rc=$? ..&&.. condition is false"
$0 0 || echo " \$0 0 rc=$? ..||.. condition is true" && echo " \$0 0 rc=$? ..&&.. condition is false"
((1!=1)) || echo " ((1!=1)) rc=$? ..||.. condition is true" && echo " ((1!=1)) rc=$? ..&&.. condition is false"
$0 1 || echo " \$0 1 rc=$? ..||.. condition is true" && echo " \$0 1 rc=$? ..&&.. condition is false"
echo
echo 'test 4: With the order of && and || statements still swapped, introduce "unexpected" errors into the first of the &&/|| pair'
echo ======
((1==1)) && (echo " ((1==1)) rc=$? ..&&.. condition is true"; $0 1) || echo " ((1==1)) rc=$? ..||.. condition is false"
$0 0 && (echo " \$0 0 rc=$? ..&&.. condition is true"; $0 2) || echo " \$0 0 rc=$? ..||.. condition is false"
((1!=1)) && (echo " ((1!=1)) rc=$? ..&&.. condition is true"; $0 3) || echo " ((1!=1)) rc=$? ..||.. condition is false"
$0 1 && (echo " \$0 1 rc=$? ..&&.. condition is true"; $0 4) || echo " \$0 1 rc=$? ..||.. condition is false"
exit
try
false && echo "hello"и
false ; echo "hello"видеть разницу
Команда (функция, в случае скрипта) после && выполняется в зависимости от RETVAL первой команды (функция, в случае скрипта). Это приводит к тому, что первая команда вернет значение 0, если оно будет успешным. Мы можем проверить возвращаемое значение для выполнения дальнейших команд.
&& и AND, это означает, что вторая команда будет выполняться только если первый вернулся верно (без ошибок).
Вы можете попробовать разницу для себя:
ls /invalid/path && echo "hello!", так как / invalid / path не существует, ls не может показать вам список каталогов. Он выйдет из строя с сообщением об ошибке: «ls: / invalid / path: Нет такого файла или каталога». Вторая половина команды (эхо «привет!») Даже не выполняется, потому что первая половина не удалась. ls /invalid/path ; echo "hello!" Такое же сообщение об ошибке появляется, как и раньше, но на этот раз выполняется вторая часть! ls: / invalid / path: Нет такого файла или каталога привет!Почему это полезно? Предположим, вы хотите извлечь файл с именем archive.tar.gz. Вы можете использовать команду tar zxvf archive.tar.gz && rm archive.tar.gz. Если по какой-либо причине извлечение архива не выполняется, вторая часть не выполняется! Вы можете попробовать еще раз.
Если вы используете; в той же ситуации архив удаляется, и вы не можете повторить попытку.
Обновление: я добавил как скрипт, чтобы увидеть некоторые из возможных ловушек:
Поскольку никто не упомянул «||», я
Обновить : некоторые важные переформулировки здесь & amp; & amp; как «то» выражения «if», которое отвечает «true»
|| НЕ нравится «else» в статусе «если» .. || как «then» выражения «if», которое отвечает на «false»
Более конкретно, & amp; & amp; тестирует $? возвращаемое значение предыдущего оператора NOT и передает управление оператору или подколе, непосредственно следуя за & amp; & amp; ... он передает только управление, если $? правда.
|| аналогичен, и его часто видно после & amp; & amp; , но он проверяет ложное возвращаемое значение ($?) из предыдущей предыдущей инструкции ... NB !, Nota Bene! Заметьте, хорошо! .... если инструкция preecing является & amp; & amp; оператор, который возвращает false, когда вы ожидаете, что он будет истинным, тогда || будет реагировать на ложное, поэтому смешение на одной линии может быть рискованным
. Основная мысль, которую я пытаюсь сделать, связана с ошибкой, которую я сделал. т.е.: ## [[condition]] & amp; & amp; & amp; A || B false не ведет себя как тройной стиль C / C ++. т.е.: // (условие)? A: B См. Сценарий ниже для примеров «неожиданных» результатов от «A»
. Основной тест и & amp; & amp; и || оператор должен быть в одной строке ...
Запустите этот скрипт, чтобы увидеть, что может случиться с ошибками при использовании & amp; & amp; & amp; и || Самый последний выполненный оператор может быть не таким, которого вы ожидаете ..
[[condition]] & amp; & amp; & amp; & amp; & amp; echo Hello || echo Goodbye .... обычно безопасно, потому что хорошо сформированное эхо возвращает true. , но как насчет доступа к файлу, который не выходит?
#!/bin/bash
#
# "as expected" return codes" means: expected to behave like a normal AND / OR contition test
#
if [[ "$1" != "" ]] ; then exit $1; fi # recursive call to return an arbitary $? value (decimal)
echo
echo 'test 1: All return codes are "as expected"'
echo ======
((1==1)) && echo " ((1==1)) rc=$? ..&&.. condition is true" || echo " ((1==1)) rc=$? ..||.. condition is false"
$0 0 && echo " \$0 0 rc=$? ..&&.. condition is true" || echo " \$0 0 rc=$? ..||.. condition is false"
((1!=1)) && echo " ((1!=1)) rc=$? ..&&.. condition is true" || echo " ((1!=1)) rc=$? ..||.. condition is false"
$0 1 && echo " \$0 1 rc=$? ..&&.. condition is true" || echo " \$0 1 rc=$? ..||.. condition is false"
echo
echo 'test 2: Now throw in some "unexpected" errors into the first of the &&/|| pair'
echo ======
((1==1)) && (echo " ((1==1)) rc=$? ..&&.. condition is true"; $0 1) || echo " ((1==1)) rc=$? ..||.. condition is false"
$0 0 && (echo " \$0 0 rc=$? ..&&.. condition is true"; $0 2) || echo " \$0 0 rc=$? ..||.. condition is false"
((1!=1)) && (echo " ((1!=1)) rc=$? ..&&.. condition is true"; $0 3) || echo " ((1!=1)) rc=$? ..||.. condition is false"
$0 1 && (echo " \$0 1 rc=$? ..&&.. condition is true"; $0 4) || echo " \$0 1 rc=$? ..||.. condition is false"
echo
echo 'test 3: Now swap the order of && and || statements, using "as expected" return codes'
echo ======
((1==1)) || echo " ((1==1)) rc=$? ..||.. condition is true" && echo " ((1==1)) rc=$? ..&&.. condition is false"
$0 0 || echo " \$0 0 rc=$? ..||.. condition is true" && echo " \$0 0 rc=$? ..&&.. condition is false"
((1!=1)) || echo " ((1!=1)) rc=$? ..||.. condition is true" && echo " ((1!=1)) rc=$? ..&&.. condition is false"
$0 1 || echo " \$0 1 rc=$? ..||.. condition is true" && echo " \$0 1 rc=$? ..&&.. condition is false"
echo
echo 'test 4: With the order of && and || statements still swapped, introduce "unexpected" errors into the first of the &&/|| pair'
echo ======
((1==1)) && (echo " ((1==1)) rc=$? ..&&.. condition is true"; $0 1) || echo " ((1==1)) rc=$? ..||.. condition is false"
$0 0 && (echo " \$0 0 rc=$? ..&&.. condition is true"; $0 2) || echo " \$0 0 rc=$? ..||.. condition is false"
((1!=1)) && (echo " ((1!=1)) rc=$? ..&&.. condition is true"; $0 3) || echo " ((1!=1)) rc=$? ..||.. condition is false"
$0 1 && (echo " \$0 1 rc=$? ..&&.. condition is true"; $0 4) || echo " \$0 1 rc=$? ..||.. condition is false"
exit
попробовать
false && echo "hello"и
false ; echo "hello"вижу разницы
Команда (функция, в случае скрипта) после && выполняется в зависимости от RETVAL первой команды (функция, в случае скрипта). Это приводит к тому, что первая команда вернет значение 0, если оно будет успешным. Мы можем проверить возвращаемое значение для выполнения дальнейших команд.