我的split.bash_profile 文件中有以下功能。
function split {
name="${$1%.*}"
ext="${$1##*.}"
echo filename=$name extension=$ext
}
Run Code Online (Sandbox Code Playgroud)
现在我应该期望命令split foo.bar会给我
filename=foo extension=bar
Run Code Online (Sandbox Code Playgroud)
但我收到-bash: ${$1%.*}: bad substitution错误消息。然而,这同样适用于 shell 脚本中的常用 shell 变量,$x而不是$1在 .bash_profile 中(我认为在 .bashrc 中也是如此)。
有什么问题,有什么补救办法?
在参数扩展中删除$前面的变量名 ( 1):
name="${1%.*}"
ext="${1##*.}"
Run Code Online (Sandbox Code Playgroud)
您已经用$起始大括号引用了变量{,不需要在变量名称前面再添加一个。