2012-06-28 85 views

回答

1

是的,它可以。

$ :() 
> { 
> echo "hello from : :)" 
> } 
$ : 
hello from : :) 
+0

是的,它工作。你可以有任何網址說冒號可以用作標識符? –

+1

有沒有這樣的網址(我知道),但請看看討論:http://old.nabble.com/Document-what's-allowed-in-function-names-td31361546.html;它可能對你有意思。 –

+0

我認爲你可以把它留在這裏:)謝謝你,這是愉快的閱讀,但它當然不是真的。 John Skeet,Darin Dimitrov,Balus--他們是非常棒的人。 –

1

根據the documentation

name

A word consisting solely of letters, numbers, and underscores, and beginning with a letter or underscore. Names are used as shell variable and function names. Also referred to as an identifier.

號,冒號是不是在功能名稱中無效。所以要麼炸彈不能用bash工作,要麼文檔失敗。

我不久就想到冒號可能指的是built-in operator,但我不明白這怎麼能得到預期的語義。

+0

有一個在該頁面的例子。 「 $的ulimit -u 50 $:(){:|:& };: -bash:叉:資源暫時不可用 」 這意味着他用冒號作爲函數名,對不對? –

0

實現似乎不一致。你可以定義和調用一個包含冒號的函數,Google甚至可以在其style guide中建議這個包。

雖然我注意到你不能導出或取消設置這些功能。

#!/usr/bin/env bash 

foo:bar() { 
    echo "foo:bar called" 
} 

foo:bar 

export -f foo:bar 

unset foo:bar 

export不會抱怨,但如果你調用另一個bash腳本之後foo:bar不可用。

的未設置甚至會引發一個錯誤:

/foo/bar: line 11: unset: `foo:bar': not a valid identifier 

$ bash --version 
GNU bash, version 4.2.46(1)-release (x86_64-redhat-linux-gnu) 
相關問題