2011-12-27 137 views
11

我是Bash腳本的新手。我運行在Ubuntu下面這個簡單的腳本:Ubuntu Bash無法理解的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 2011-12-27 18:46:37

+0

這對我的作品...拱Linux i686 – Paul 2011-12-27 18:46:57

+1

從命令行執行'dos2unix scriptname scriptname'。 '\ r'是回車符,你是在Windows機器上創建文件併發送給linux的? – 2011-12-27 18:49:20

回答

10

您通過Windows機器下載了該文件,並且您有CRLF行結尾(即C和相關語言中的\r\n)。

刪除DOS行尾。例如,編輯vim中的文件並使用:set fileformat=unix(加上返回)更改格式,然後將文件寫回。替代技術可以使用tr命令或dos2unixdtou,具體取決於可用的內容。

1

剪切和從該頁面的代碼粘貼到你的Ubuntu的編輯器,所以你會得到你的固定線路的結局(\r\n在Windows VS \n在Linux爲例)

如果你將它保存爲新文件我相信它會正常工作。

1

聽起來像文件中有一些無關的不可打印的字符。
使用vi/Vim的文件:
[ESC]進入命令行模式
然後鍵入:set list

+0

一旦你列出了角色,你將如何去除它們?歡迎來到StackOverflow。你的回答非常正確,但還沒有完成。 – 2011-12-27 18:53:04

11

根本就

dos2unix scriptname 

並執行腳本。

如果您沒有該工具,則可以執行以下操作來安裝它。

sudo apt-get install dos2unix 

OR

執行下面的命令行黑客將文件轉換。

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

OR

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

非常感謝.... – Houman 2011-12-27 20:05:23