有一些循环函数:
runcfg () {
o=0
while (( o<3 )); do
echo $o
(( o++ ))
done
}
它从另一个脚本manager.sh
调用:
...
-C|--runconfig)
source $APP_BASEDIR/app-install/bin/config_functions; runcfg;
shift;;
...
让我们运行它:
$ bash -x manager.sh -run
看看输出:
...
+ runcfg
+ o=0
+ (( o<3 ))
+ echo 0
0
+ (( o++ ))
这就是所有的线......没有其他事情发生。
但是!如果稍微变化并在算术调用后添加&&
:
runcfg () {
o=0
while (( o<3 )); do
echo $o
(( o++ )) && echo ++OK || echo ++ER
done
}
有效!
...
+ runcfg
+ o=0
+ (( o<3 ))
+ echo 0
0
+ (( o++ ))
+ echo ++ER
++ER
+ (( o<3 ))
+ echo 1
1
+ (( o++ ))
+ echo ++OK
++OK
+ (( o<3 ))
+ echo 2
2
+ (( o++ ))
+ echo ++OK
++OK
+ (( o<3 ))
+ shift
...
这是什么?
答案 0 :(得分:3)
您的脚本配置为在出错时退出(请注意,它第一次打印++ER
),((o++))
== ((0))
,它返回1(错误)。选项:
let o++
。((o++))||:
)for ((o = 0; o < 3; o++))
)set +e
)。