bash 功能:拆分文件的名称和扩展名

hba*_*ega 1 bash function

我的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 中也是如此)。

有什么问题,有什么补救办法?

hee*_*ayl 5

在参数扩展中删除$前面的变量名 ( 1):

name="${1%.*}"
ext="${1##*.}"
Run Code Online (Sandbox Code Playgroud)

您已经用$起始大括号引用了变量{,不需要在变量名称前面再添加一个。