1
按照shellcheck wiki:Shell腳本:未定義-a,-o開關行爲
-a
和-o
爲是指在[..]測試表達沒有很好地定義AND
和OR
。它們在POSIX中是過時的擴展,它們的行爲幾乎總是未定義的。
任何想法會發生什麼錯誤?
按照shellcheck wiki:Shell腳本:未定義-a,-o開關行爲
-a
和-o
爲是指在[..]測試表達沒有很好地定義AND
和OR
。它們在POSIX中是過時的擴展,它們的行爲幾乎總是未定義的。
任何想法會發生什麼錯誤?
查看http://pubs.opengroup.org/onlinepubs/9699919799/utilities/test.html#tag_20_128_16關於問題的討論-a
和-o
可以提高。一般來說,表達式如何被解析取決於任何參數擴展到的內容。請看下面的測試:
test "$1" -a "$2"
取決於$1
值,這可能是要麼
# Unspecified behavior
# With three arguments, the first "!", the second argument
# must be a unary primary like -n or -f.
test "!" -a "$2"
或
test "foo" -a "$2" # Test that "foo" and "$2" are non-zero length strings
如果$1
是!
,test
將可以把它看成否定運算符,而不是應檢查其長度的字符串。
另外,test
只適用於4個或更少的參數; -a
和-o
通常會導致5個或更多參數傳遞給test
。