我正在尝试在目录内循环并使用空格重命名文件名。但是我在用sh test.sh运行它时出现了错误的替换错误
#!/bin/bash
for f in /home/admin1/abc/*.kmz
do
mv "$f" "${f// /_}"
#rm $i
done
由于我需要在crontab中进行配置,因此可能需要使用sh命令而不是./
来运行它答案 0 :(得分:0)
Bourne Shell sh
不支持这种类型的替换。您可以运行以下脚本:
for f in /home/admin1/abc/*.kmz
do
mv "$f" `echo "$f" |tr ' ' _`
done
答案 1 :(得分:0)
使我的评论成为答案:
您正在使用sh
运行,但是您的脚本声明它是bash
脚本。在许多系统上,sh
不是bash
,而是一个不支持所有bashisms的较轻的外壳。
任何一个
bash test.sh
,或chmod u+x
,然后运行./test.sh
以使用shebang行。