What does the || : in this line of bash script fro

2020-04-08 11:21发布

问题:

ln -s /var/log/$SERVICE_NAME $RPM_INSTALL_PREFIX/logs || :

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

What is the significance of the || : and why is it there?

回答1:

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.



回答2:

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…



回答3:

`||` is OR operator. `:` means "do nothing". 

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



回答4:

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.



回答5:

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



标签: bash rpm-spec