bash 函数名称中的连字符

bash 函数名称中的连字符

正在编写bash函数。看起来函数名称可以包含连字符:-

因此indus-headrc ()indus-tailrc ()。曾以为只允许使用下划线。

答案1

关于 Bash 的一个常见误解是函数名称必须遵循与变量相同的规则。 Bash 手册甚至建议这样做:

仅由字母、数字和下划线组成且以字母或下划线开头的单词。名称用作 shell 变量和函数名称。也称为标识符。

事实上,Bash 函数名称几乎可以是任何可打印字符。例如,我可以定义自己的预自增一元函数:

function ++ { (( $1++ )); }

当然,任何理智的人还是会遵循他的建议。标准函数命名


尝试编写 POSIX-ly ( #!/bin/sh),它不会接受连字符并出错:

语法错误:函数名错误


结论

所以,如果你问我:

  1. 是否可以包含非标准字符:可以。

  2. 那我应该用它吗?绝对不行!你会损害可移植性,因此你不应该使用任何非标准的命名。遵守 POSIX,这是养成良好习惯的好方法。

相关内容