Bash中标识符(特别是函数名和变量名)的语法规则是什么?
我编写了一个Bash脚本,并在Ubuntu,Debian,Red Hat 5和6甚至是旧的Solaris 8盒上的各种版本的Bash上进行了测试。该脚本运行良好,因此已发布。
但是,当用户在SUSE计算机上尝试使用它时,它给出了“无效标识符”错误。幸运的是,我猜测函数名称中包含无效字符是正确的。连字符弄乱了。
至少经过某种程度测试的脚本在另一个Bash或发行版上具有完全不同的行为,这一事实令人不安。如何避免这种情况?
从手册:
Shell Function Definitions ... name () compound-command [redirection] function name [()] compound-command [redirection]
name 在其他地方定义:
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)