User Tools

Site Tools


bash:arithmetic_evaluation_and_errexit_trap

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
bash:arithmetic_evaluation_and_errexit_trap [2016/11/25 16:07] – created peterbash:arithmetic_evaluation_and_errexit_trap [2021/01/26 12:00] (current) – removed peter
Line 1: Line 1:
-====== Bash - Arithmetic evaluation and errexit trap ====== 
- 
-<code bash> 
-count=0 
-things="0 1 0 0 1" 
- 
-for i in $things; 
-do 
-   if [ $i == "1" ]; then 
-       (( count++ )) 
-   fi 
-done 
- 
-echo "Count is ${count}" 
-</code> 
- 
-Looks fine? I've probably written this many times. There's a small gotcha: 
- 
-<WRAP box> 
-((expression)) 
-The expression is evaluated according to the rules described below under ARITHMETIC EVALUATION. If the value of the expression is non-zero, the return status is 0; otherwise the return status is 1. This is exactly equivalent to let "expression". 
-</WRAP> 
- 
-When you run this script with -e or enable errexit -- probably because the script has become too big to be reliable without it -- count++ is going to return 0 (post-increment) and per above stop the script. A definite trap to watch out for! 
  
bash/arithmetic_evaluation_and_errexit_trap.1480090064.txt.gz · Last modified: 2020/07/15 09:30 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki