2012-03-04 58 views
4

我新來這個Bash/Shell的東西,並得到一個單一的任務網絡分析。在Bash中循環:語法錯誤:意外的文件結尾

只是做一個簡單的循環,但得到一個奇怪的錯誤已經無法修復,儘管2個小時的谷歌抓取:

#!/bin/bash 
x=1 
while [ $x -le 5 ] 
do 
    echo "Welcome $x times" 
    x=$(($x + 1)) 
done 

我一直在使用一個使用以下語法循環嘗試

#!/bin/bash 
for i in {1..5} 
do 
    echo "Welcome $i times" 
done 

每當我把第一個腳本在我的服務器我得到以下信息:

./temp.sh: line 8: syntax error: unexpected end of file 

運行已經執行下面的命令添加權限,使文件的可執行文件之前:

ls -l temp.sh 
chmod +x temp.sh 

正如一個側面說明,我發現關於循環以下計算器問題,複製的「固定碼」,並得到了同樣的錯誤:Looping a Bash Shell Script

我運行版本4+,並使用G-VIM作爲Windows 7上的文本編輯器。任何人有任何想法?

設法解決這個自己:

看到,因爲我的名聲仍然過低,我目前還不能回答這個自己,所以阻止人們在這裏浪費時間還有我是如何固定它:

好吧,我已經設法解決這個問題,所以會留給任何其他人看看周圍。

我的問題是我使用FileZilla連接到我的服務器。看起來,即使我使用WinVi或G-Vim創建文件,當我將文件傳輸到服務器時,FileZilla在我的文件末尾添加了一些額外字符的形式,就像在運行Windows時一樣。

我切換到WinSCP作爲我的連接代理,並試過它,嘿presto工作正常。

感謝您的其他答案。

劉易斯

+2

上面的代碼是好的。如果您使用Windows進行編輯,您確定您使用的是正確的行結束符? – 2012-03-04 15:04:35

+0

嗨奧利 - 我只是修復它,請參閱我對上述描述的更改不能發佈答覆自己太低代表。謝謝。 – 2012-03-04 15:21:17

+0

您現在有足夠的知名度將您的解決方案轉換爲正確的答案,並接受它來解決此問題。請做。 – 2014-06-13 08:26:39

回答

1

好吧,我已經設法解決這個問題,所以將留給任何其他人看看周圍。

我的問題是我使用FileZilla連接到我的服務器。看起來,即使我使用WinVi或G-Vim創建文件,當我將文件傳輸到服務器時,FileZilla在我的文件末尾添加了一些額外字符的形式,就像在運行Windows時一樣。

我切換到WinSCP作爲我的連接代理,並試過它,嘿presto工作正常。

0

你有done後換行?這可能是麻煩的原因。

它可以在您機器上的Cygwin中使用bash嗎? (應該是的;當複製到我的Mac,例如,與任何shbash,或者ksh運行它,它工作正常。)

+0

嗨喬納森,謝謝你的回答。沒有新的路線。然而,我只是設法將腳本內容直接運行到bash中,並且它運行良好,因此它不是代碼本身的語法錯誤。我剛剛發現了問題所在,如果你感興趣,我會在一分鐘內發佈自己的答案。劉易斯 – 2012-03-04 15:17:41

2

運行bash腳本使用DOS2UNIX的命令就可以了

dos2unix <bashScript> 
./<bashScript> 
+0

感謝您的回答阿迪亞 - 我已經試過了,但dos2unix或是他fromdos的arent安裝的在線服務器上,我沒有管理權限。另外即時通訊使用不添加Windows CR的文本編輯器,這是我認爲是最初的問題。 – 2012-03-04 15:16:39

0

我也有這個問題。其實這個問題的解決方案是在編輯菜單中編寫腳本檢查的時候。EOL轉換是否是Unix格式。它應該是用於shell腳本的Unix格式。

相關問題