【正文】
令為:test a分析:除命令外至少還有一個位置參數(shù),即$不能為0,刪除不能為$1,程序設計過程如下。執(zhí)行后的結果如下:[rootlocalhost bin] test1 this is a test program //傳遞5個參數(shù)Program name is /bin/test1 //給出程序的完整路徑和名字There are totally 5 parameters passed to this program //參數(shù)的總數(shù)The last is 0 //程序執(zhí)行效果The parameters are this is a test program //返回由參數(shù)組成的字符串echo “The last is $?〞。實例 122:編寫一個Shell程序,用于描述Shell程序中的位置參數(shù)為:$0、$、$?、$*,程序名為test1,代碼如下:[rootlocalhost bin]vi test1! /bin/shecho “Program name is $0”。l $?:Shell程序在Shell中退出的情況,正常退出返回0,反之為非0值。l $0:命令含命令所在的路徑。如$0表示程序的名字,$1表示傳遞給程序的第一個參數(shù),以此類推。類似C語言中的數(shù)組,Linux會把輸入的命令字符串分段并給每段進行標號,標號從0開始。1231 位置參數(shù)由系統(tǒng)提供的參數(shù)稱為位置參數(shù)。分析:此Shell程序中需要依次執(zhí)行以下命令為:進入root目錄:cd /root顯示root目錄下的文件信息:ls –l新建文件夾kk: mkdir kk進入root/kk目錄:cd kk新建一個文件aa: vi aa 編輯完成后需手工保存修改aa文件的權限為可執(zhí)行:chmod +x aa回到root目錄:cd /root因此該Shell程序只是以上命令的順序集合,假定程序名為mkf[rootlocalhost root]vi mkfcd /rootls –lmkdir kkcd kkvi aachmod +x aacd /root 123 在Shell程序中使用的參數(shù)u 位置參數(shù)u 內(nèi)部參數(shù)如同ls命令可以接受目錄等作為它的參數(shù)一樣,在Shell編程時同樣可以使用參數(shù)。[rootlocalhost bin]chmod +x date1223 執(zhí)行Shell程序執(zhí)行Shell程序有下面三種方法:方法一:[rootlocalhost bin]./ date,Today is:二月 06 星期二Wish you a lucky day !方法二:另一種執(zhí)行date的方法就是把它作為一個參數(shù)傳遞給Shell命令:[rootlocalhost bin] Bash date,Today is:二月 06 星期二Wish you a lucky day !方法三: 為了在任何目錄都可以編譯和執(zhí)行Shell所編寫的程序,即把/bin的這個目錄添加到整個環(huán)境變量中。1222 建立可執(zhí)行程序 編輯完該文件之后不能立即執(zhí)行該文件,需給文件設置可執(zhí)行程序權限。如果在echo語句中執(zhí)行Shell命令date,那么需要在date命令前加符號“amp。date “+%B%d%A〞echo “Wish you a lucky day !〞1221 編輯Shell程序編輯一個內(nèi)容如下的源程序,保存文件名為date,可將其存放在目錄/bin下。在執(zhí)行的時候,通過Linux操作系統(tǒng)一個接一個地解釋和執(zhí)行每條命令。 122 編寫/修改權限及執(zhí)行Shell程序的步驟u 編寫Shell程序u 執(zhí)行Shell程序Shell程序有很多類似C語言和其他程序設計語言的特征,但是又沒有程序語言那樣復雜。df長Shell命令行可以使用反斜線字符〔\〕在命令行上擴充,例如:[rootlocalhost root] echo “this is \long mand〞This is long mand第12章 Shell腳本編程l Shell命令行的運行l(wèi) 編寫、修改權限和執(zhí)行Shell程序的步驟l 在Shell程序中使用參數(shù)和變量l 表達式比擬、循環(huán)結構語句和條件結構語句l 在Shell程序中使用函數(shù)和調(diào)用其他Shell程序121 Shell命令行書寫規(guī)那么u Shell命令行的書寫規(guī)那么對Shell命令行根本功能的理解有助于編寫更好的Shell程序,在執(zhí)行Shell命令時多個命令可以在一個命令行上運行,但此時要使用分號〔;〕分隔命令,例如:[rootlocalhost root] ls a* l。free。注意:“〞符號是自動產(chǎn)生的,而不是輸入的。Shell程序是指放在一個文件中的一系列Linux命令和實用程序。首先,來編寫第一個Shell程序,從中學習Shell程序的編寫、修改權限、執(zhí)行過程。[rootlocalhost bin]vi date! /bin/shecho “Mr.$USER,Today is:〞echo amp。注意:! /bin/sh通知采用Bash解釋。〞,其中%B%d%A為輸入格式控制符。使用如下命令。具體操作如下:[rootlocalhost root]export PATH=/bin:$PATH[rootlocalhost bin] date,Today is:二月 06 星期二Wish you a lucky day !實例 121:編寫一個Shell程序mkf,此程序的功能是:顯示root下的文件信息,然后建立一個kk的文件夾,在此文件夾下建立一個文件aa,修改此文件的權限為可執(zhí)行。Shell程序中的參數(shù)分為位置參數(shù)和內(nèi)部參數(shù)等。位置參數(shù)的值可以用$N得到,N是一個數(shù)字,如果為1,即$1。第0號為程序名字,從1開始就表示傳遞給程序的參數(shù)。1232 內(nèi)部參數(shù)上述過程中的$0是一個內(nèi)部變量,它是必須的,而$1那么可有可無,最常用的內(nèi)部變量有$0、$、$?、$*,它們的含義如下。l $:傳遞給程序的總的參數(shù)數(shù)目。l $*:傳遞給程序的所有參數(shù)組成的字符串。echo “There are totally $ parameters passed to this program〞。echo “The parameter are $*〞。注意:命令不計算在參數(shù)內(nèi)。(1) 用vi編輯程序[rootlocalhost bin]vi test2! /bin/shif test $ eq 0thenecho “Please specify a file!〞else gzip $1 //現(xiàn)對文件進行壓縮mv $ $HOME/dustbin //移動到回收站echo “File $1 is deleted !〞 fi(2) 設置權限[rootlocalhost bin]chmod +x test2(3) 運行[rootlocalhost bin] test2 a (如果a文件在bin目錄下存在)File a is deleted! 124 在Shell程序中的使用變量u 變量的賦值u 變量的訪問u 變量的輸入1241變量的賦值 在Shell編程中,所有的變量名都由字符串組成,并且不需要對變量進行聲明。注意:等號〔=〕前后沒有空