是否有可能重寫Bash的內置測試?因此,bash - 可能'重寫'測試([[ - ] --builtin?
[[ $1 = 'a' ]]
不只是做測試,但也輸出哪些結果是預期的,當它失敗?像
echo "Expected $1 to be a.'
編輯
東西,我知道這是不好的:-)。
是否有可能重寫Bash的內置測試?因此,bash - 可能'重寫'測試([[ - ] --builtin?
[[ $1 = 'a' ]]
不只是做測試,但也輸出哪些結果是預期的,當它失敗?像
echo "Expected $1 to be a.'
編輯
東西,我知道這是不好的:-)。
測試表達式複合命令會影響所有擴展的真正短路。
$ set -x
$ [[ 0 -gt x=1+1 || ++x -eq $(tee /dev/fd/3 <<<$x) && $(echo 'nope' >&3) ]] 3>&1
+ [[ 0 -gt x=1+1 ]]
++ tee /dev/fd/2
2
+ [[ ++x -eq 2 ]]
所以,是的,你可以做在一次測試中表達什麼。實際上,測試產生副作用並且幾乎從未用於產生輸出是非常罕見的。
此外,保留字可以被覆蓋。對於ksh風格的函數定義,Bash比POSIX風格(它仍然允許一些無效的名稱)更寬鬆。
function [[ { [ "${@:1:${#@}-1}" ]; }; \[[ -a -o -a -o -a ]] || echo lulz
另一個的forky炸彈。
if function function if function if if \function & then \if & fi && \if & then \function & fi && then \function fi
像這樣的東西?
if [[ $1 == 'a' ]]; then
echo "all right";
else
echo 'Expected $1 to be "a"'
fi
無論如何,如果您只希望得到一個答案,測試有什麼意義?或者你的意思是出於調試目的?
[[ 'a' = 'a' ]] || echo "failed"
[[ 'b' = 'a' ]] || echo "failed"
failed
我不認爲你可以在bash覆蓋的運營商 - 這是不是一種語言 - 它看起來真的有點像用火箭筒射擊:)螞蟻 – Qnan 2012-08-17 11:01:36