What does the || : in this line of bash script from an rpm spec file do?

前端 未结 5 541
北荒
北荒 2021-01-19 04:02
ln -s /var/log/$SERVICE_NAME $RPM_INSTALL_PREFIX/logs || :

In the rpm spec file every line ends with || :

What is the

相关标签:
5条回答
  • 2021-01-19 04:44
    `||` is OR operator. `:` means "do nothing". 
    

    Your statement says, "do the soft linking or do nothing"

    0 讨论(0)
  • 2021-01-19 04:45

    It swallows the exit code.

    || does the thing after it if the thing before it fails (i.e., has a non-zero exit code). : is the “do nothing” command. Put them together…

    0 讨论(0)
  • 2021-01-19 04:50

    I know others have answered, but I prefer to put:

    command || /bin/true

    IMHO that makes it a lot more obvious to the next person who is reading the bash script/spec file.

    0 讨论(0)
  • 2021-01-19 04:53

    It is simply means OR. You can try small testing like this

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

    If file not there echo will printed. Try with existing file, it will not

    0 讨论(0)
  • 2021-01-19 04:58

    It causes any error to be ignored so that the rpm operation isn't canceled.

    || causes the next command to run if the previous command failed, and : always succeeds.

    0 讨论(0)
提交回复
热议问题