函数名在bash中有效,但在sh中无效

函数名在bash中有效,但在sh中无效,bash,shell,sh,Bash,Shell,Sh,在使用bash和sh时,我发现以下内容在bash中是有效的: system.out.println () { printf "$1"; } 但不是在上海: sh: `system.out.println': not a valid identifier 为什么会有这种差异?上面定义的函数是否违反了导致此错误的某些约定(POSIX等)?这只是点,不能在shell函数名称中使用点。或者任何变量名 我将把您链接到这个问题:在POSIX shell中,函数必须仅由下划线和字母数字字符组成。虽然我不确

在使用bash和sh时,我发现以下内容在bash中是有效的:

system.out.println () { printf "$1"; }
但不是在上海:

sh: `system.out.println': not a valid identifier

为什么会有这种差异?上面定义的函数是否违反了导致此错误的某些约定(POSIX等)?

这只是点,不能在shell函数名称中使用点。或者任何变量名


我将把您链接到这个问题:

在POSIX shell中,函数必须仅由下划线和字母数字字符组成。虽然我不确定这是否能解决您的问题,但您可以尝试使用别名。如下所示:ldot_函数(){ls-A$*| egrep'^\.}别名l.=ldot_函数