使用“@”作为 bash 函数名

Geo*_*rge 5 bash function

是否可以在 bash 脚本中使用“@”符号作为函数名?以下不起作用:

function @() {
  echo hello
}
Run Code Online (Sandbox Code Playgroud)

kba*_*kba 4

编辑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 中的工作原理相同。