В чем причина использования & amp; вместо ; разместить команды на одной строке?

Не будучи экспертом ни в Linux, ни в Unix, мне интересно, в чем разница между этими двумя методами, когда две команды расположены в одной строке? Я не вижу разницы в выходных данных в этом упрощенном примере

Pete$date ; time
Sun Mar 17 19:37:20 EDT 2013

real    0m0.000s
user    0m0.000s
sys 0m0.000s

Pete$date &&time
Sun Mar 17 19:37:46 EDT 2013

real    0m0.000s
user    0m0.000s
sys 0m0.000s

Это не вызвало никаких проблем - мне просто любопытно ..

30
задан 19 March 2013 в 23:03

2 ответа

&& является логическим «и». Первый аргумент оценивается, а второй - только если первый возвращает true. Причина в том, что «false И что-то» всегда ложно, поэтому нет необходимости оценивать второй аргумент в этом случае.

Таким образом, используя &&, вы убедитесь, что вторая команда не выполняется, если первая сообщает об ошибке (true представлен кодом выхода 0, который указывает, что ошибки не было). Напротив, ; выполняет обе команды, независимо от того, каков результат первой.

Вывод: объединение команд с помощью && - хорошая привычка. В отличие от ;, он не будет выполнять последующие команды, если что-то пойдет не так.

0
ответ дан 19 March 2013 в 23:03

;

Последовательно выполняет команды, каков предыдущий статус выхода был:

# sh -c "exit 0" ; echo "2nd command"
2nd command
# sh -c "exit 1" ; echo "2nd command"
2nd command

&&

Логичный И

Выполните следующую команду, но только если предыдущая команда успешно выполнилась (статус выхода был 0):

# sh -c "exit 0" && echo "2nd command"
2nd command
# sh -c "exit 1" && echo "2nd command"
#

||

Логичный ИЛИ

Выполните следующую команду, но только если предыдущая неудавшаяся команда (статус выхода не был 0):

# sh -c "exit 0" || echo "2nd command"
#
# sh -c "exit 1" || echo "2nd command"
2nd command
26
ответ дан 19 March 2013 в 23:03

Другие вопросы по тегам:

Похожие вопросы: