ln -s /var/log/$SERVICE_NAME $RPM_INSTALL_PREFIX/logs || :
In the rpm spec file every line ends with || :
What is the
`||` is OR operator. `:` means "do nothing".
Your statement says, "do the soft linking or do nothing"
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…
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.
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
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.