2017-09-29 1 views
1

Ich muss eine Bash-Funktion erstellen, deren Name mit + endet. Zum Beispiel foo+. Diese Arbeit:Mit einem Pluszeichen am Ende einer Bash-Funktion Name

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

aber nicht:

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

Warum nicht? Es beklagt sich nicht über die +. Gibt es einen Weg dahin?

Antwort

1

Dies passiert, weil +() ein Extglob (wenn aktiviert) ist, so Bash sieht someglob { true; }, die nicht gültig ist.

es hier funktioniert ohne extglob:

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

Hier ist es mit extglob brechen:

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

Umgehungen ein Leerzeichen vor dem () oder mit dem function Stichwort hinzufügen:

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

'Function' funktioniert nicht, wenn ich root bin. Weißt du, warum? – gogators

+0

'Funktion' ist eine Bash-Erweiterung und funktioniert nicht, wenn Sie' sh' oder 'dash' verwenden –

Verwandte Themen