На этот вопрос уже есть ответ здесь:
Я установил Ubuntu bash на свой компьютер с Windows, поэтому я могу тестировать сценарии Linux вне работы. Я создал очень простой скрипт с базовым "hello world" и каталогом изменений (cd), но при выполнении он отображает hello world. Это ошибка в строке cd to directory.
Вот ошибка:
$ ./test.sh
hello world
zipping away
./test.sh: line 6: cd: $'/home/fjaffer/temp\r\r': No such file or directory
./test.sh: line 7: $'\r': command not found
ffr@DP-PC:~$
Мой сценарий test.sh
находится ниже:
#!/bin/bash
echo "hello world"
echo "zipping away"
dir=/home/fjaffer/temp
cd $dir
Посоветуйте, пожалуйста? Спасибо.
Это - потому что Вы создали свой сценарий в машине окон, некоторых \r
(возврат каретки) был добавлен в конце каждой строки.
Удалите их как это:
tr -d '\r' < test.sh > new-test.sh
Также заключите значение переменной в кавычки:
cd "$dir"
затем запустите свой скрипт:
./new-test.sh
Как подсказка также лучше использовать:
cd ... || exit
в случае любого отказа.
Настройте своего редактора, таким образом, это использует формат Linux для того, чтобы сохранить файлы (Если это способно к), или используйте редактора в ударе как nano
:
Другая опция к использованию dos2unix
управляйте для преобразования файла в формат типа Unix.
Использование:
dos2unix your_file