shell程式設計(轉三呼的一篇文章)

鴨脖發表於2013-06-16
武漢大學國際軟體學院 2010級國際2班 李三乎
        好久沒寫日誌了,今天寫一個。
        對於一種新的語言的學習,最近感覺書上還是很經典的,雖然從識別符號開始講很讓人不爽,但是現在發現要想快速掌握一門語言的話按照書上的結構還是很正確的。當然只是說書上的結構,內容有的還是偏容易。
        對於shell程式設計,先說下變數的聲名,跟javascript一樣,不用聲名,直接使用,賦值就行了。變數的使用有以下幾種方式:1.$varname 
2.${varname}。第二種主要是為了一種特殊情況,比如想列印2nd這個2是儲存在變數two裡的,但是和nd連線在一起了,第一種就不能用了,用第二種。
        再看shell的資料型別有哪些,只有一種字串型別。
        shell程式設計每條語句的分割符:換行或是分號,其中大括號可以把幾條用分號隔開的語句作為一個整體,即語句塊。
        shell程式設計是程式導向的程式設計,而不是物件導向的,所以要考慮函式的宣告和使用。格式
functionname(){# inside the body $1 is the first argument given to the function# $2 the second ...body}
        使用的時候直接使用functionname就行,不需要括號,如果有引數的話函式宣告和使用也都不用括號,直接在語句分割符之前在後面用空格分割每個引數就好。有一點要注意,shell必需是先宣告後使用,像C,C++一樣,跟java那種物件導向的不一樣。
        一個程式功能過程中,只有以下幾種語句的可能:普通語句,迴圈語句,條件分支語句。
        shell裡的普通語句:上邊講的差不多了。
        迴圈語句:
while 表示式 ;do
迴圈體
done

for 變數名 in 表示式1 表示式2 表示式3 ……  ;do
迴圈體
done
        條件分支語句:
        我的理解,這個分為條件語句和分支語句,當然,這兩個本質上是一個東西。
條件語句:

if ....; then
....
elif ....; then
....
else
....
fi

        用老師的話說這個fi是屬於惡搞弄的,呵呵 if fi包括下邊的case esac程式設計師的惡搞。
case ... in
...) do something here ;;
esac
        這個是分支語句。

        對於任何一種過程化的語言,應該可以按照以上的步驟速成,第一步搞明白變數的宣告,使用,型別,每種型別的特殊之處,就比如shell中的字串型別,特殊點有很多,比如用雙引號和單引號的不同,有沒有轉義字元啊,萬用字元之類的。
        第二步,函式的宣告及使用方法,這個是過程化語言幾乎是最重要的一點了。
        第三步,流程控制語句即條件分支語句和迴圈語句的使用方法,格式。
        當然這只是一個框架,每一種的特殊之處要查書,遇到了再查也一樣。
        也要學會使用別人寫好的函式,要能看懂別人寫的文件,知道如何輸入引數,獲得輸出,函式是幹什麼的。

相關文章