一尘不染

Bash中有效标识符(例如函数,vars等)的规则是什么?

linux

Bash中标识符(特别是函数名和变量名)的语法规则是什么?

我编写了一个Bash脚本,并在Ubuntu,Debian,Red Hat 5和6甚至是旧的Solaris
8盒上的各种版本的Bash上进行了测试。该脚本运行良好,因此已发布。

但是,当用户在SUSE计算机上尝试使用它时,它给出了“无效标识符”错误。幸运的是,我猜测函数名称中包含无效字符是正确的。连字符弄乱了。

至少经过某种程度测试的脚本在另一个Bash或发行版上具有完全不同的行为,这一事实令人不安。如何避免这种情况?


阅读 251

收藏
2020-06-02

共1个答案

一尘不染

手册

   Shell Function Definitions
       ...
       name () compound-command [redirection]
       function name [()] compound-command [redirection]

name 在其他地方定义:

       name   A  word  consisting  only  of alphanumeric characters and under‐
              scores, and beginning with an alphabetic character or an  under‐
              score.  Also referred to as an identifier.

因此,连字符无效。但是,在我的系统上,它们确实可以工作…

$ bash --version
GNU bash, version 4.2.25(1)-release (x86_64-pc-linux-gnu)
2020-06-02