Bash中的标识符,特别是函数和变量名称的语法规则是什么?
我写了一个Bash脚本,并在Ubuntu,Debian,Red Hat 5和6上的各种版本的Bash上进行了测试,甚至是一个旧的Solaris 8框.脚本运行良好,因此它运行.
然而,当用户在SUSE机器上尝试使用它时,它给出了“不是有效的标识符”错误.幸运的是,我猜这个函数名中有一个无效的字符是对的.连字符弄乱了它.
至少有一些测试的脚本在另一个Bash或发行版上会有完全不同的行为,这是令人不安的.我该如何避免这种情况?
解决方法
Shell Function Definitions ... name () compound-command [redirection] function name [()] compound-command [redirection]
名称在别处定义:
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)