2011-12-27 2 views
11

Я новичок в Bash Script. Я бегу следующий простой скрипт в Ubuntu, как это:Bash скрипт, который не понял Ubuntu Bash

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' 

Реальный сценарий:

#!/bin/bash 

# Installation script for latest Wordpress website on Ubuntu 
# 
# Kave 
# December 27, 2011 


adminEmail="[email protected]" 

echo "database name:" 
read dbname 

Что все эти '\r' сообщения об ошибках в ближайшее время? Даже комментарии, похоже, не понятны ...

+0

Похоже, у вас есть проблемы с окончаниями линии, но я не знаю, как это исправить ... – evotopid

+0

Это работает для меня ... Arch Linux i686 – Paul

+1

Из командной строки do 'dos2unix scriptname scriptname'. '\ r' - возврат каретки, вы создали файл на машине Windows и отправили его в linux? –

ответ

10

Вы загрузили файл с помощью Windows-машины, и у вас есть окончания строки CRLF (это \r\n на C и родственных языках).

Удалить окончания линии DOS. Например, отредактируйте файл в vim и измените формат на :set fileformat=unix (плюс Return), а затем напишите файл обратно. Альтернативные методы могут использовать команду tr или dos2unix или dtou, в зависимости от того, что доступно.

1

Вырезать и вставить код с этой страницы в редактор на вашей Ubuntu, так что вы получите ваши завершения строк фиксированных (\r\n на окнах против \n на Linux, например)

Если вы сохраните его как новый файл. Я уверен, что все будет хорошо.

1

Похоже, в файле есть посторонние непечатаемые символы.
Открыть файл в Vi/Vim:
нажмите [ESC], чтобы попасть в командный режим
введите :set list

+0

И как только у вас есть перечисленные персонажи, как вы собираетесь их удалить? Добро пожаловать в StackOverflow. Ваш ответ очень на правильных строках, но он еще не завершен. –

11

Просто сделать

dos2unix scriptname 

и выполнить сценарий.

Если у вас нет инструмента, вы можете сделать следующее, чтобы установить его.

sudo apt-get install dos2unix 

ИЛИ

Выполните следующие действия командной строки взломает для преобразования файла.

tr -d '\015' <scriptname> scriptname.new 

ИЛИ

sed -i 's/\x0D$//' scriptname 
+0

Большое спасибо .... – Houman