Пробел в качестве имени функции в 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 ответ
Решение
Позвольте мне подчеркнуть соответствующую часть:
слово, состоящее исключительно из символов подчеркивания, цифр и алфавита из переносимого набора символов
Другие символы в переносимом наборе символов не допускаются. Наличие символов в переносимом наборе символов является необходимым, но не достаточным условием.