AIX上的“set -o errexit”出现意外行为

时间:2016-11-17 16:37:02

标签: linux aix subshell

此脚本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”,但不应退出脚本。

雷米

1 个答案:

答案 0 :(得分:0)

在AIX 6和7上具有相同的行为

雷米