是否可以在 bash 脚本中使用“@”符号作为函数名?以下不起作用:
function @() {
echo hello
}
Run Code Online (Sandbox Code Playgroud)
编辑2:虽然@在vanilla bash中没有问题,但当设置了extglob shell选项echo @()时,它被用作模式分组运算符,一个简单的方法可以在某些条件下挂起你的shell。更有理由不使用@作为标识符`。
编辑 1:澄清一下,根据标识符的定义不允许这样做。我不推荐它。我只是说为了向后兼容,可以在bash 中用作@标识符。
@() { echo "$1 world"; }
@ hello
alias @="echo hello"
@ world
Run Code Online (Sandbox Code Playgroud)
@用作特殊参数 ( $@) 和数组 ( ${arr[@]}),但不用于其他地方。Bash 不会阻止您将它用于别名和函数等标识符,但不会阻止变量名。
有些人使用别名@为sudo,因此他们可以执行命令为@ apt-get install。
@我不使用shell 标识符的主要原因是我已经习惯了Makefile 中的语义@,它可以使命令静音而不会产生任何副作用。
顺便说一句:在 zsh 中的工作原理相同。