首页 > 代码库 > bash算术求值和errexit陷阱
bash算术求值和errexit陷阱
原文: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) 然后脚本就退出了. 这个陷阱需要注意!
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。