参数扩展语法bash

时间:2015-04-13 02:31:11

标签: bash shell scripting

我正在尝试编写一个简短的脚本,它将两个命令行参数作为文件扩展名,并将第一个扩展名更改为具有第二个扩展名的所有文件。我很确定以下脚本应该可以工作,但由于某种原因,它在定义变量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%.*}'

1 个答案:

答案 0 :(得分:2)

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

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