我正在尝试编写一个简短的脚本,它将两个命令行参数作为文件扩展名,并将第一个扩展名更改为具有第二个扩展名的所有文件。我很确定以下脚本应该可以工作,但由于某种原因,它在定义变量name
的行上给出了语法错误,我不知道为什么。我是新手来编写脚本,所以任何帮助都会非常感激!
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%.*}'
答案 0 :(得分:2)
原因是您在;
之前错过了do
或换行符。另外,您不想在*
中引用"*$1"
,因为*
将被视为文字。更正后的脚本:
#!/usr/bin/env bash
for f in *"$1"; do
name=${f%.*}
mv "$f" "$name$2"
done