Friday, August 24, 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

plot explanation - Why did Peaches' mom hang on the tree? - Movies & TV

In the middle of the movie Ice Age: Continental Drift Peaches' mom asked Peaches to go to sleep. Then, she hung on the tree. This parti...