shell 程式設計總報錯,shell 指令碼,在除錯時,FOR迴圈那行程式碼,總是出現錯誤syntax error near unexpected token r

2022-02-20 14:06:57 字數 2181 閱讀 6877

1樓:

while [ "$i" –gt "0" ]加了雙引號就是字串的比較,而-gt操作符只用於數字的比較。改為:

while [ $i –gt 0 ]

if [ -f "$file" ] then[ 本身是一個shell內建命令,所以在then前面要用分號隔開,作為[ 命令的結束。改為:

if [ -f "$file" ]; then或者不加分號,將then分行寫也可以(像下面elif分支那樣)。

2樓:匿名使用者

#!/bin/bash

xx=0

func()

echo $dire

for file in $(ls);

doif [ -f "$file" ]

then            #err1 : 寫在if一行,則前加分號,如;then 否則分成兩行!!

i=$xx       #err2 : 少了$while [ $i -gt 0 ] #err3 : -gt 是數值比較,加引號是字串比較,意義不同

doecho -e "+\c"   ##???你的意圖是不是不想輸出換行?

i=`expr $i - 1`

done

echo  -e "-\c"   ##???

echo $/$file

elif [ -d $file ]

then

cd "$file"

dire=$

xx=$(( $xx + 1 ))

func

cd ..

fidone

}#**執行效果好象少輸出了當前目錄名

func

3樓:斑竹威武

你將if[$2 = "-"];then改為if空格[空格$2 = "-"空格];then

也就是多加三個空格

然後你再試試吧。。

shell 指令碼,在除錯時,for迴圈那行**,總是出現錯誤syntax error near unexpected token '$'\r''

4樓:託多羅夫

原因:因為你所處理的檔案

換行符是dos格式的」\r\n」 ;

可以使用cat -v 檔名 來檢視換行版符是否是,如果是上述的,則行結權尾會是^m 需要轉換成linux/unix格式的」\n」;

具體轉換辦法就是轉換換行符 。

可以用sed命令處理一下檔案,命令如下:

sed 『s/\r//』 原檔案 >轉換後檔案 ;

sed 命令的引數中 」代表決定引用引數,不允許引數中的值讓shell解釋,s代表替換 /後面跟的是被替換的內容,後面的//代表替換後的內容為空 ;

我比較喜歡editplus的join lines功能,把多行的值變成一個邏輯行,便於寫到shell指令碼中作為迴圈的變數。

5樓:儂不要惹我

使用dos2unix命令轉換一下,將windows格式轉換成unix格式

6樓:匿名使用者

這種bai情況發生的原因是因為你所處du

理的檔案zhi換行符是dos格式dao的"\r\n"

可以使用cat -v 檔案專名 來檢視換行符是否屬是,如果是上述的,則行結尾會是^m

需要轉換成linux/unix格式的"\n"

具體轉換辦法就是轉換換行符

可以用sed命令處理一下檔案,命令如下:

sed 's/\r//' 原檔案 >轉換後檔案

7樓:匿名使用者

指令碼名是bai runbot ?

直接看,

dufor迴圈這句沒有

錯誤,我這zhi

裡修dao改執行了一下,也沒回有提示錯誤答。

建議你執行前先用 bash -n ./runbot 檢查一下語法。

沒報錯的話再用 bash -x ./runbot 除錯,看到底哪句出錯。

8樓:狂瘋爆愚

1.for do done????

2.try echo $depth?

9樓:匿名使用者

#!/bin/bash

name=(a b c d e f g h j i)for i in $

doecho $i

done

shell指令碼的概念區別,Shell指令碼的概念區別

shell shell是一種程式設計語言。作為命令語言,它互動式解釋和執行使用者輸入的命令或者自動地解釋和執行預先設定好的一連串的命令 作為程式設計語言,它定義了各種變數和引數,並提供了許多在高階語言中才具有的控制結構,包括迴圈和分支 指令碼 指令碼,是使用一種特定的描述性語言,依據一定的格式編寫的...

編寫shell指令碼,編寫一個shell指令碼

ip ifconfig grep inet addr awk f awk head 1 echo 本機ip是 ip iplist echo ip awk f.for k in docheckip iplist k echo check checkip tmp ping c1 checkip grep...

shell是什麼意思,shell 中 是什麼意思

第一來個意思 假如你剛完自 成登入還沒輸入任何字元之bai前,du 你所看到的遊標所在位置的同zhi一行的dao左邊部份,我們稱之為提示符號 prompt 給一般使用者帳號使用提示符號。第二個意思 作變數或運算替換。例如 a hello,b a,那麼b也等於hello.shell裡 有很多意思 1 ...