0
這個腳本外殼適用於GNU/Linux的罰款,但沒有對AIX 5.3以 「set -o errexit」 在AIX上
#!/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
沒有 「設置-o nounset -o errexit」 它工作正常...我不understant原因。你能解釋我的腳本shell有什麼問題嗎?
感謝,
雷米
編輯11月18日:精密
設置-e 當這個選項是,如果一個簡單的命令用於任何的在殼錯誤的後果列出的 原因失敗或返回退出 狀態值> 0,並且不的一部分複合列表在 之後,直到或者如果是關鍵字,並且不是AND或OR列表的一部分,並且不是以!開頭的管線。保留字 然後殼應立即退出。 http://explainshell.com/explain?cmd=set+-e
在我的例子中,第二測試 「[1 -eq 0]」 是AND的一部分,所以我應該看到輸出 「CCC」。此測試返回1,它捕獲輸出「bbb」,但不應退出腳本。
雷米
我想'/斌/ sh'根本沒有按」不懂'set -o errexit'。使用bash(讓第一行是'#!/ bin/bash')編輯:env'SHELL'是'/ bin/bash'不能證明任何東西,不要依賴它。 –