这个问题与我以前的一个. TL;DR 来自muru 的回答函数名称中的字符必须是可移植字符集才能使函数名有效。问题是空格是在列表上(<space>
或<U0020>
字符),这就是为什么我感到困惑为什么我不能这样做:
$ $' '(){ echo "Hullo";}
bash: `' '': not a valid identifier
$ hello$' 'world(){ echo "hi";}
bash: `hello' 'world': not a valid identifier
使用其他 shell:
$ mksh -c '\ (){ echo "Hello";} '
mksh: : invalid function name
$ ksh -c '\ (){ echo "Hello";} '
ksh: : invalid function name
$ dash -c '\ (){ echo "Hello";} '
dash: 1: Syntax error: Bad function name