Espaço literal como nome da função no bash

1

Esta questão é frouxamente relacionada a um dos meus anteriores . TL; DR da resposta do muru é que os caracteres no nome da função têm que estar em Conjunto de caracteres portátil para ser válido para um nome de função. O problema é que o espaço é na lista (o caracter <space> ou <U0020> ), e é por isso que estou confuso sobre por que não posso fazer isso:

$ $'  '(){ echo "Hullo";}
bash: ''  '': not a valid identifier
$ hello$' 'world(){ echo "hi";}
bash: 'hello' 'world': not a valid identifier

Com outros shells:

$ 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
    
por Sergiy Kolodyazhnyy 17.12.2017 / 05:57

1 resposta

1

Deixe-me enfatizar a parte relevante:

  

uma palavra que consiste unicamente de sublinhados, dígitos e alfabéticos do conjunto de caracteres portátil

Outros caracteres no conjunto de caracteres portáteis não são permitidos. O personagem que está no conjunto de caracteres portátil é condição necessária, mas não suficiente .

    
por muru 17.12.2017 / 06:03