2017-09-29 13 views
1

名前が+で終わるbash関数を作成する必要があります。たとえば、foo+です。これらの作業:bash関数名の最後にプラス記号を使用する

+foo() { true; } 
foo+bar() { true; } 

が、これはそうではない:

foo+() { true; } 
-bash: syntax error near unexpected token `}' 

なぜありませんの?それは+については不平を言っていません。これを回避する方法はありますか?

答えて

1

これは、+()がextglob(有効な場合)なので、bashはsomeglob { true; }が無効であると判断するためです。ここで

は、それがextglobせずに作業します:

$ shopt -u extglob 
$ foo+() { echo bar; } 

ここではextglobで破壊だ:

foo+() { echo bar; } 
function foo+() { echo bar; } 
+0

$ shopt -s extglob $ foo+() { echo bar; } bash: syntax error near unexpected token '}' 

回避策は()の前にスペースを追加したり、functionキーワードを使用することを含みます'function'を使うことは、私がrootユーザであると動作しません。なぜなのかご存知ですか? – gogators

+0

'function'はbash拡張であり、' sh'や 'dash'を使用すると動作しません –

関連する問題