使用扩展的 Unicode 字符(毫无疑问)对许多用户很有用。
更简单的 shell(ash(busybox)、dash)和 ksh 会失败:
tést() { echo 34; }
tést
Run Code Online (Sandbox Code Playgroud)
我知道 POSIX有效函数名称使用Names 的这个定义。这意味着这个正则表达式:
[a-zA-Z_][a-zA-Z0-9_]*
Run Code Online (Sandbox Code Playgroud)
但是,在第一个链接中还说:
实现可能允许函数名称中的其他字符作为扩展名。
问题是:
相关问题:是否
可以在 shell 函数名称中使用特殊字符?
我对在函数名称中使用元字符 (>) 不感兴趣。
包含“-”的 Upstart 和 bash 函数名称
我不认为运算符(减法“-”)应该是名称的一部分。
查看 的输出env,我注意到还有以下函数。
BASH_FUNC_mc%%=() { . /usr/share/mc/mc-wrapper.sh
}
Run Code Online (Sandbox Code Playgroud)
/usr/share/mc/mc-wrapper.sh 文件的内容如下。
MC_USER=`id | sed 's/[^(]*(//;s/).*//'`
MC_PWD_FILE="${TMPDIR-/tmp}/mc-$MC_USER/mc.pwd.$$"
/usr/bin/mc -P "$MC_PWD_FILE" "$@"
if test -r "$MC_PWD_FILE"; then
MC_PWD="`cat "$MC_PWD_FILE"`"
if test -n "$MC_PWD" && test -d "$MC_PWD"; then
cd "$MC_PWD"
fi
unset MC_PWD
fi
rm -f "$MC_PWD_FILE"
unset MC_PWD_FILE
Run Code Online (Sandbox Code Playgroud)
%%函数名中的字符是什么意思?它们是在特定情况下调用的函数,还是允许我以与其他函数不同的方式调用它?
我正在使用 openSUSE 42.3 和 Bash 版本 4.3.42(1)-release (x86_64-suse-linux-gnu),如果这有什么不同的话。