Я написал небольшой сценарий, который должен переименовать некоторые файлы в каталог для меня.Почему вывод из моего скрипта говорит «mv: command not found», но не тогда, когда я запускаю его непосредственно в оболочке?
#!/bin/bash
a=1
for i in *.jpg ; do
new=$(printf "%04d.jpg" "$a")
mv "$i" "$new"
let a=a+1
done
#end of file
После запуска скрипта говорит следующее: «мв: команда не найдена»
Почему нет выхода ошибок при запуске кода непосредственно на корпусе, как это:
for i in *.jpg ; do new=$(printf "%04d.jpg" "$a") ; mv $i $new ; let a=a+1 ; done
Убедитесь, что вы не создаете/установка переменную '$ PATH' где-нибудь в скрипте – arco444
BTW , поэтому стандарт POSIX предполагает, что приложения используют имена нижнего регистра для своих собственных переменных среды (и, следовательно, переменные оболочки, поскольку они имеют пространство имен); он предотвращает ошибочно переопределяющие переменные в пространстве имен, зарезервированном для использования в системе. См. Четвертый абзац http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap08.html –
Также убедитесь, что у вас нет контрольных символов в этом скрипте: 'od -c myscript.sh' –