Что значит || : в этой строке скрипта bash из файла спецификации rpm делать? - PullRequest
4 голосов
/ 21 апреля 2011
ln -s /var/log/$SERVICE_NAME $RPM_INSTALL_PREFIX/logs || :

В файле спецификации rpm каждая строка заканчивается на || :

Что означает значение || : и почему оно существует?

Ответы [ 5 ]

12 голосов
/ 21 апреля 2011

Это приводит к тому, что любая ошибка игнорируется, поэтому операция rpm не отменяется.

|| вызывает выполнение следующей команды, если предыдущая команда не выполнена, и : всегда выполняется успешно.

3 голосов
/ 21 апреля 2011

Глотает код выхода.

|| делает вещь после нее, если вещь до того, как она выходит из строя (то есть, имеет ненулевой код выхода). : - команда «ничего не делать». Положите их вместе ...

2 голосов
/ 09 июля 2011

Я знаю, что другие ответили, но я предпочитаю ставить:

command || /bin/true

ИМХО, что делает его намного более очевидным для следующего человека, который читает скрипт / спецификацию bashфайл.

2 голосов
/ 21 апреля 2011
`||` is OR operator. `:` means "do nothing". 

В вашем утверждении говорится: «делайте мягкие ссылки или ничего не делайте»

1 голос
/ 21 апреля 2011

Это просто означает ИЛИ.Вы можете попробовать небольшое тестирование, как это

ls nofile-here-like || echo 'Not here'

Если файл не найден, эхо будет напечатано.Попробуйте с существующим файлом, он не будет

...