参数扩展语法 bash



我正在尝试编写一个简短的脚本,该脚本将两个命令行参数作为文件扩展名,并将具有第一个扩展名的所有文件更改为具有第二个扩展名。 我很确定以下脚本应该可以工作,但由于某种原因,它在定义变量name的行上给了我一个语法错误,我不确定为什么。 我对 bash 脚本相当陌生,所以任何帮助将不胜感激!

for f in "*$1" do
name=${f%.*}
mv $f "$name$2"
done

Bash 打印的错误消息如下所示:

./script: line 4: syntax error near unexpected token `name=${f%.*}'
./script: line 4: `name=${f%.*}'

原因是您在 do 之前缺少;或换行符。此外,您也不想在"*$1"中引用*,因为*将被视为文字。更正的脚本:

#!/usr/bin/env bash
for f in *"$1"; do
    name=${f%.*}
    mv "$f" "$name$2"
done

最新更新