Пробел в качестве имени функции в bash

Этот вопрос слабо связан с одним из моих предыдущих. TL;DR из ответа Муру состоит в том, что символы в имени функции должны быть в переносимом наборе символов, чтобы быть действительными для имени функции. Проблема в том, что место в списке <space> или же <U0020> характер), поэтому я запутался, почему я не могу сделать это:

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

С другими снарядами:

$ 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 ответ

Решение

Позвольте мне подчеркнуть соответствующую часть:

слово, состоящее исключительно из символов подчеркивания, цифр и алфавита из переносимого набора символов

Другие символы в переносимом наборе символов не допускаются. Наличие символов в переносимом наборе символов является необходимым, но не достаточным условием.

Другие вопросы по тегам