码迷,mamicode.com
首页 > 其他好文 > 详细

bash算术求值和errexit陷阱

时间:2014-08-08 21:33:46      阅读:258      评论:0      收藏:0      [点我收藏+]

标签:style   http   color   使用   os   io   for   ar   

原文:https://www.technovelty.org//linux/bash-arithmetic-evaluation-and-errexit-trap.html

在 "traps for new players" 一章:

count=0
things="0 1 0 0 1"

for i in $things;
do
   if [ $i == "1" ]; then
       (( count++ ))
   fi
done

echo "Count is ${count}"

看上去很正常? 我可能已经这么写好多次了。但这是一个意想不到的错误:

((expression))
表达式按 ARITHMETIC EVALUATION 描述的规则求值. 如果表达式的值非0,返回值为0; 否则返回值是1. 这个和let "expression"是相同的.

当你使用 -e或使能errexit执行该脚本时 -- 也许是由于脚本过大而变的不可信 -- count++ 将返回 0 (post-increment) 然后脚本就退出了. 这个陷阱需要注意!

bash算术求值和errexit陷阱,布布扣,bubuko.com

bash算术求值和errexit陷阱

标签:style   http   color   使用   os   io   for   ar   

原文地址:http://blog.csdn.net/robertsong2004/article/details/38442711

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!