Bash script не понят Ubuntu Bash
Я новичок в Bash Script. Я запускаю следующий простой script в Ubuntu следующим образом:
sudo bash -x Script.sh
Вывод:
+ $'\r'
: command not found
+ $'\r'
: command not found
+ $'\r'
: command not found
+ adminEmail=$'[email protected]\r'
+ $'\r'
: command not found
' echo 'database name:
database name:
+ read $'dbname\r'
Фактический script:
#!/bin/bash
# Installation script for latest Wordpress website on Ubuntu
#
# Kave
# December 27, 2011
adminEmail="[email protected]"
echo "database name:"
read dbname
Что это за сообщения об ошибках '\r'
? Даже комментарии, похоже, не поняты...
Ответы
Ответ 1
Вы загрузили файл с помощью Windows-машины, и у вас есть окончания строки CRLF (\r\n
на C и родственных языках).
Удалите окончания строки DOS. Например, отредактируйте файл в vim
и измените формат с помощью :set fileformat=unix
(плюс Return), а затем напишите файл обратно. Альтернативные методы могут использовать команду tr
или dos2unix
или dtou
, в зависимости от того, что доступно.
Ответ 2
Просто сделайте
dos2unix scriptname
и выполните script.
Если у вас нет инструмента, вы можете сделать следующее, чтобы установить его.
sudo apt-get install dos2unix
ИЛИ
Сделайте следующие манипуляции с командной строкой, чтобы преобразовать файл.
tr -d '\015' < scriptname > scriptname.new
ИЛИ
sed -i 's/\x0D$//' scriptname
Ответ 3
Вырезать и вставить код с этой страницы в редактор вашего Ubuntu, так что вы получите исправления строк (\r\n
на windows vs \n
в Linux, например)
Если вы сохраните его как новый файл, я уверен, что он будет работать нормально.
Ответ 4
Похоже, в файле есть некоторые посторонние непечатаемые символы.
Откройте файл в Vi/Vim:
нажмите [ESC]
, чтобы войти в командный режим
затем введите :set list