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