Bash 中空格文字作为函数名称

Bash 中空格文字作为函数名称

这个问题与我以前的一个. 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

答案1

让我强调一下相关部分:

一个单词独自可移植字符集中的下划线、数字和字母

不允许使用可移植字符集中的其他字符。可移植字符集中的字符是是必要的,但是不是充分条件

相关内容