此脚本shell在GNU / Linux上运行良好,但在AIX 5.3上运行不正常
#!/bin/sh
echo $SHELL
set -o nounset -o errexit
[ 1 -eq 1 ] && {
echo "zzz"
} && echo "aaa" && [ 1 -eq 0 ] && echo "bbb"
echo "ccc"
在GNU / Linux上,我得到了预期的输出:
/bin/bash
zzz
aaa
ccc
在AIX上,我有这个:
/bin/ksh
zzz
aaa
没有“set -o nounset -o errexit”它工作得很好......我不明白为什么。你能解释一下我的脚本shell中有什么问题吗?
谢谢,
雷米
编辑18 nov。 :精度
设置-e 启用此选项时,如果任何一个简单命令失败 Shell错误的后果中列出的原因或返回退出 状态值> 0,并且不是a之后的化合物列表的一部分 while,until或if keyword,并且不是AND或OR的一部分 列表,并不是一个前面的管道!保留字, 然后外壳应立即退出。 http://explainshell.com/explain?cmd=set+-e
在我的例子中,第二个测试“[1 -eq 0]”是AND的一部分,所以我应该看到输出“ccc”。此测试返回1,它捕获输出“bbb”,但不应退出脚本。
雷米
答案 0 :(得分:0)
在AIX 6和7上具有相同的行为
雷米