Сценарий оболочки - ошибка неверной замены при запуске сценария с sh - PullRequest
0 голосов
/ 09 мая 2020

Я пытаюсь l oop внутри каталога и переименовать имя файла с пробелом. Но я получаю плохую ошибку замены при запуске с тестом sh. sh

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

Поскольку мне нужно настроить в crontab, мне может потребоваться запустить его с помощью команды sh, а не с ./

Ответы [ 2 ]

0 голосов
/ 11 мая 2020

Чтобы сделать мой комментарий ответом:

Вы работаете с sh, но ваш сценарий объявляет, что это сценарий bash. Во многих системах sh не bash, а более легкая оболочка, которая не поддерживает все bashisms.

Либо

  • запускается с bash test.sh, или
  • отметьте файл chmod u+x и запустите ./test.sh, чтобы использовать строку shebang.
0 голосов
/ 09 мая 2020

Bourne Shell sh не поддерживает этот тип замены. Вы можете запустить этот сценарий:

for f in /home/admin1/abc/*.kmz
do
  mv "$f" `echo "$f" |tr ' ' _`
done
...