Friday 24 August 2018

linux - Bash ignoring error for a particular command



I am using following options



set -o pipefail
set -e



In bash script to stop execution on error. I have ~100 lines of script executing and I don't want to check return code of every line in the script.



But for one particular command, I want to ignore the error. How can I do that?


Answer



The solution:



particular_script || true



Example:



$ cat /tmp/1.sh
particular_script()
{
false
}

set -e


echo one
particular_script || true
echo two
particular_script
echo three

$ bash /tmp/1.sh
one
two



three will be never printed.



Also, I want to add that when pipefail is on,
it is enough for shell to think that the entire pipe has non-zero exit code
when one of commands in the pipe has non-zero exit code (with pipefail off it must the last one).



$ set -o pipefail
$ false | true ; echo $?
1

$ set +o pipefail
$ false | true ; echo $?
0

No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...