Shell脚本-使用sh运行脚本时出现错误替换错误

时间:2020-05-09 13:01:25

标签: shell sh

我正在尝试在目录内循环并使用空格重命名文件名。但是我在用sh test.sh运行它时出现了错误的替换错误

#!/bin/bash
for f in /home/admin1/abc/*.kmz
do
mv "$f" "${f// /_}"
#rm $i
done

由于我需要在crontab中进行配置,因此可能需要使用sh命令而不是./

来运行它

2 个答案:

答案 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行。