2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩25頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  Linux操作系統(tǒng)基礎(chǔ)課程設(shè)計(jì)參考文檔</p><p>  Linux操作系統(tǒng)基礎(chǔ)課程設(shè)計(jì)I</p><p>  第 1章 Shell 腳本編程1</p><p>  1-1Shell 命令行書寫規(guī)則1</p><p>  1-2 編寫/修改權(quán)限及執(zhí)行 Shell 程序的步驟1</p><

2、p>  1-3 在 Shell 程序中使用的參數(shù)3</p><p>  1-4 在 Shell 程序中的使用變量5</p><p>  1-5 表達(dá)式的比較8</p><p>  1-6 循環(huán)結(jié)構(gòu)語(yǔ)句15</p><p>  1-7 條件結(jié)構(gòu)語(yǔ)句19</p><p>  1-8 在 Shel

3、l 腳本中使用函數(shù)21</p><p>  1-9 在 Shell 腳本中調(diào)用其他腳本22</p><p>  Linux操作系統(tǒng)基礎(chǔ)課程設(shè)計(jì)</p><p>  1、(必做)使用虛擬機(jī)VMware安裝linux系統(tǒng)</p><p>  (1)把一個(gè)10G的硬盤進(jìn)行合理分區(qū),其中有有安裝系統(tǒng)的區(qū)域,有存放數(shù)據(jù)的區(qū)域,并創(chuàng)建合理的交換分區(qū)

4、文件。</p><p> ?。?)加載第2塊硬盤(8G),該硬盤分為3個(gè)分區(qū),1個(gè)主分區(qū)(2G)和2個(gè)邏輯分區(qū)(分別為3G)。</p><p> ?。?)新建目錄/mnt/ljp1,/mnt/ljp2,把第2塊硬盤的邏輯分區(qū)1和邏輯分區(qū)2分別掛載到/mnt/ljp1和/mnt/ljp2(要求系統(tǒng)啟動(dòng)后可以自動(dòng)掛載分區(qū))。</p><p>  2、(必做)在根目錄下有

5、四個(gè)文件 m1.txt,m2.txt,m3.txt,m4.txt,用 Shell 編程,實(shí)現(xiàn)自動(dòng) 創(chuàng)建 m1,m2,m3,m4 四個(gè)目錄,并將 m1.txt,m2.txt,m3.txt,m4.txt 四個(gè)文件分別拷貝到各自相應(yīng)的目錄下。</p><p>  3、(必做)編寫一個(gè) Shell 程序,用戶輸入1個(gè)數(shù)字,實(shí)現(xiàn)如下功能:</p><p> ?。?)計(jì)算從1到用戶輸入數(shù)字的和。(1+

6、2+3+…n)</p><p>  (2)計(jì)算從1到用戶輸入數(shù)字的所有奇數(shù)數(shù)字的和。(1+3+5…)</p><p>  4、(必做)編寫一個(gè) Shell 程序,實(shí)現(xiàn)如下功能:</p><p> ?。?). 當(dāng)運(yùn)行一個(gè)程序的時(shí)候,這個(gè)程序會(huì)讓使用者選擇 Y 或 N ;</p><p> ?。?)如果使用者輸入 Y 或 y 時(shí),就顯示『 OK,

7、 continue 』</p><p> ?。?)如果使用者輸入 n 或 N 時(shí),就顯示『 Oh, interrupt !』</p><p> ?。?)如果不是 Y/y/N/n 之內(nèi)的其他字節(jié),就顯示『 I don't know what your choice is 』(利用中括號(hào)、 && 與 || 來(lái)實(shí)現(xiàn))</p><p>  5、(必做

8、)某系統(tǒng)管理員需每天做一定的重復(fù)工作,請(qǐng)按照下列要求,編制一個(gè)解決方案:</p><p> ?。?)在下午 4 :50 刪除/abc 目錄下的全部子目錄和全部文件;</p><p> ?。?)從早 8:00~下午 6:00 每小時(shí)讀取/xyz 目錄下 x1 文件中每行第一個(gè)域的全部數(shù)據(jù)加入 到/backup 目錄下的 bak01.txt 文件內(nèi);</p><p> 

9、?。?)每逢星期一下午 5:50 將/data 目 錄 下 的所 有 目 錄 和 文 件 歸檔 并 壓 縮 為 文 件 :backup.tar.gz;</p><p> ?。?)在下午 5:55 將 IDE 接口的 CD-ROM 卸載(假設(shè):CD-ROM 的設(shè)備名為 hdc);</p><p>  (5)在早晨 8:00 前開機(jī)后啟動(dòng)。</p><p> ?。ㄗⅲ菏?/p>

10、用計(jì)劃任務(wù)cron來(lái)實(shí)現(xiàn))</p><p>  6、(選做)使用者輸入一個(gè)文檔名,做出以下判斷:</p><p> ?。?). 這個(gè)文件是否存在,若不存在則給予一個(gè)“Filename does not exist”的信息,并中斷程序;</p><p> ?。?). 若這個(gè)文件存在,則判斷他是個(gè)文件或目錄,結(jié)果輸出“Filename is regular file”或

11、“Filename is directory”;</p><p> ?。?). 判斷一下,運(yùn)行者的身份對(duì)這個(gè)文件或目錄所擁有的權(quán)限,并輸出權(quán)限數(shù)據(jù)?。ㄗ⒁饫?test 與 && 還有 || 等標(biāo)志?。?lt;/p><p>  7、(選做)撰寫一支程序,他的作用是:</p><p>  1.) 先查看一下 /root/test/logical 這個(gè)名稱是

12、否存在;</p><p>  2.) 若不存在,則創(chuàng)建一個(gè)文件,使用 touch 來(lái)創(chuàng)建,創(chuàng)建完成后離開; </p><p>  3.) 如果存在的話,判斷該名稱是否為文件,若為文件則將之刪除后創(chuàng)建一個(gè)目錄,檔名為 logical ,之后離開; </p><p>  4.) 如果存在的話,而且該名稱為目錄,則移除此目錄!</p><p>  

13、8、(選做)(任選其一)</p><p> ?。?)編寫一個(gè) Shell 程序,鍵盤輸入兩個(gè)數(shù)及+、-、*、與/中的任一運(yùn)算符,計(jì)算這兩個(gè)數(shù)的運(yùn)算 結(jié)果。</p><p> ?。?)編寫 4 個(gè)函數(shù)分別進(jìn)行算術(shù)運(yùn)算+、-、*、/,并編寫一個(gè)菜單,實(shí)現(xiàn)運(yùn)算命令。</p><p>  9、(選做)編寫一個(gè) Shell 程序,呈現(xiàn)一個(gè)菜單,有 0-5 共 6 個(gè)命令選項(xiàng),

14、1 為掛載 U 盤,2 為 卸載 U 盤,3 為顯示 U 盤的信息,4 把硬盤中的文件拷貝到 U 盤,5 把 U 盤中的文件拷貝到硬盤 中,選 0 為退出。程序分析:把此程序分成題目中要求的 6 大功能模塊,另外加一個(gè)菜單顯示及選擇的主模板。</p><p>  第 1章 Shell 腳本編程</p><p>  ??Shell 命令行的運(yùn)行</p><p>  

15、??編寫、修改權(quán)限和執(zhí)行 Shell 程序的步驟</p><p>  ??在 Shell 程序中使用參數(shù)和變量</p><p>  ??表達(dá)式比較、循環(huán)結(jié)構(gòu)語(yǔ)句和條件結(jié)構(gòu)語(yǔ)句</p><p>  ??在 Shell 程序中使用函數(shù)和調(diào)用其他 Shell 程序</p><p>  1-1Shell 命令行書寫規(guī)則</p>

16、<p>  ??Shell 命令行的書寫規(guī)則</p><p>  對(duì) Shell 命令行基本功能的理解有助于編寫更好的 Shell 程序,在執(zhí)行 Shell 命令時(shí)多個(gè)命 令可以在一個(gè)命令行上運(yùn)行,但此時(shí)要使用分號(hào)(;)分隔命令,例如:</p><p>  [root@localhost root]# ls a* -l;free;df</p><p>

17、;  長(zhǎng) Shell 命令行可以使用反斜線字符(\)在命令行上擴(kuò)充,例如:</p><p>  [root@localhost root]# echo “this is \</p><p>  >long command”</p><p>  This is long command</p><p><b>  注意:<

18、;/b></p><p>  “>”符號(hào)是自動(dòng)產(chǎn)生的,而不是輸入的。</p><p>  1-2 編寫/修改權(quán)限及執(zhí)行 Shell 程序的步驟</p><p>  ??編寫 Shell 程序</p><p>  ??執(zhí)行 Shell 程序</p><p>  Shell 程序有很多類似 C 語(yǔ)言和其他

19、程序設(shè)計(jì)語(yǔ)言的特征,但是又沒(méi)有程序語(yǔ)言那樣復(fù)雜。 Shell 程序是指放在一個(gè)文件中的一系列 Linux 命令和實(shí)用程序。在執(zhí)行的時(shí)候,通過(guò) Linux 操 作系統(tǒng)一個(gè)接一個(gè)地解釋和執(zhí)行每條命令。首先,來(lái)編寫第一個(gè) Shell 程序,從中學(xué)習(xí) Shell 程序的編寫、修改權(quán)限、執(zhí)行過(guò)程。</p><p>  1-2-1 編輯 Shell 程序</p><p>  編輯一個(gè)內(nèi)容如下的源程

20、序,保存文件名為 date,可將其存放在目錄/bin 下。</p><p>  [root@localhost bin]#vi date</p><p>  #! /bin/sh</p><p>  echo “Mr.$USER,Today is:”</p><p>  echo &date “+%B%d%A”</p>

21、<p>  echo “Wish you a lucky day !”</p><p><b>  注意:</b></p><p>  #! /bin/sh 通知采用 Bash 解釋。如果在 echo 語(yǔ)句中執(zhí)行 Shell 命令 date,則需要在 date</p><p>  命令前加符號(hào)“&”,其中%B%d%A 為輸入

22、格式控制符。</p><p>  1-2-2 建立可執(zhí)行程序</p><p>  編輯完該文件之后不能立即執(zhí)行該文件,需給文件設(shè)置可執(zhí)行程序權(quán)限。使用如下命令。</p><p>  [root@localhost bin]#chmod +x date</p><p>  1-2-3 執(zhí)行 Shell 程序</p><p

23、>  執(zhí)行 Shell 程序有下面三種方法: 方法一:</p><p>  [root@localhost bin]#./ date</p><p>  Mr.root,Today is:</p><p><b>  二月 06 星期二</b></p><p>  Wish you a lucky day !&l

24、t;/p><p><b>  方法二:</b></p><p>  另一種執(zhí)行 date 的方法就是把它作為一個(gè)參數(shù)傳遞給 Shell 命令:</p><p>  [root@localhost bin]# Bash date</p><p>  Mr.root,Today is:</p><p>

25、<b>  二月 06 星期二</b></p><p>  Wish you a lucky day !</p><p><b>  方法三:</b></p><p>  為了在任何目錄都可以編譯和執(zhí)行 Shell 所編寫的程序,即把/bin 的這個(gè)目錄添加到整個(gè) 環(huán)境變量中。</p><p>&l

26、t;b>  具體操作如下:</b></p><p>  [root@localhost bin]#. date</p><p>  Mr.root,Today is:</p><p><b>  二月 06 星期二</b></p><p>  Wish you a lucky day !</p&

27、gt;<p>  實(shí)例 1-1:編寫一個(gè) Shell 程序 mkf,此程序的功能是:顯示 root 下的文件</p><p>  信息,然后建立一個(gè) kk 的文件夾,在此文件夾下建立一個(gè)文件 aa,修改此文件的權(quán)限為可執(zhí)行。 分析:此 Shell 程序中需要依次執(zhí)行下列命令為:</p><p>  進(jìn)入 root 目錄:cd /root</p><p>

28、;  顯示 root 目錄下的文件信息:ls –l</p><p>  新建文件夾 kk: mkdir kk</p><p>  進(jìn)入 root/kk 目錄:cd kk</p><p>  新建一個(gè)文件 aa: vi aa #編輯完成后需手工保存 修改 aa 文件的權(quán)限為可執(zhí)行:chmod +x aa</p><p>  回到 root

29、 目錄:cd /root</p><p>  因此該 Shell 程序只是以上命令的順序集合,假定程序名為 mkf</p><p>  [root@localhost root]#vi mkf cd /root</p><p>  ls –l mkdir kk cd kk</p><p><b>  vi aa</b>

30、</p><p>  chmod +x aa cd /root</p><p>  1-3 在 Shell 程序中使用的參數(shù)</p><p><b>  ??位置參數(shù)</b></p><p><b>  ??內(nèi)部參數(shù)</b></p><p>  如同 ls 命令可以接受

31、目錄等作為它的參數(shù)一樣,在 Shell 編程時(shí)同樣可以使用參數(shù)。Shell</p><p>  程序中的參數(shù)分為位置參數(shù)和內(nèi)部參數(shù)等。</p><p>  1-3-1 位置參數(shù)</p><p>  由系統(tǒng)提供的參數(shù)稱為位置參數(shù)。位置參數(shù)的值可以用$N 得到,N 是一個(gè)數(shù)字,如果為 1, 即$1。類似 C 語(yǔ)言中的數(shù)組,Linux 會(huì)把輸入的命令字符串分段并給每段進(jìn)

32、行標(biāo)號(hào),標(biāo)號(hào)從 0 開 始。第 0 號(hào)為程序名字,從 1 開始就表示傳遞給程序的參數(shù)。如$0 表示程序的名字,$1 表示傳 遞給程序的第一個(gè)參數(shù),以此類推。</p><p>  1-3-2 內(nèi)部參數(shù)</p><p>  上述過(guò)程中的$0 是一個(gè)內(nèi)部變量,它是必須的,而$1 則可有可無(wú),最常用的內(nèi)部變量有$0、</p><p>  $#、$?、$*,它們的含義如下。

33、</p><p>  ??$0:命令含命令所在的路徑。</p><p>  ??$1: 傳遞給程序的第1個(gè)參數(shù)。</p><p>  ??$2: 傳遞給程序的第2個(gè)參數(shù)。(以此類推)</p><p>  ??$#:傳遞給程序的總的參數(shù)數(shù)目。</p><p>  ??$?:Shell 程序在 Shell 中退出

34、的情況,正常退出返回 0,反之為非 0 值。</p><p>  ??$*:傳遞給程序的所有參數(shù)組成的字符串。</p><p>  ??$$:當(dāng)前進(jìn)程的進(jìn)程號(hào)。</p><p>  實(shí)例 1-2:編寫一個(gè) Shell 程序,用于描述 Shell 程序中的位置參數(shù)為:$0、$#、</p><p>  $?、$*,程序名為 test1,代碼如

35、下:</p><p>  [root@localhost bin]#vi test1</p><p>  #! /bin/sh</p><p>  echo “Program name is $0”;</p><p>  echo “There are totally $# parameters passed to this program

36、 ”;</p><p>  echo “The last is $?”;</p><p>  echo “The parameter are $*”;</p><p><b>  執(zhí)行后的結(jié)果如下:</b></p><p>  [root@localhost bin]# test1 this is a test pro

37、gram //傳遞 5 個(gè)參數(shù)</p><p>  Program name is /bin/test1 //給出程序的完整路徑和名字</p><p>  There are totally 5 parameters passed to this program // 參數(shù)的總數(shù)</p><p>  The last is 0 //程序執(zhí)行效果</p&g

38、t;<p>  The parameters are this is a test program // 返回由參數(shù)組成的字符串</p><p>  注意:命令不計(jì)算在參數(shù)內(nèi)。</p><p>  實(shí)例 1-3:利用內(nèi)部變量和位置參數(shù)編寫一個(gè)名為 test2 的簡(jiǎn)單刪除程序,如刪除</p><p>  的文件名為 a,則在終端中輸入的命令為:test

39、 a</p><p>  分析:除命令外至少還有一個(gè)位置參數(shù),即$#不能為 0,刪除不能為$1,程序設(shè)計(jì)過(guò)程如下。</p><p> ?。?) 用 vi 編輯程序</p><p>  [root@localhost bin]#vi test2</p><p>  #! /bin/sh</p><p>  if t

40、est $# -eq 0 then</p><p>  echo “Please specify a file!”</p><p><b>  else</b></p><p>  gzip $1 //現(xiàn)對(duì)文件進(jìn)行壓縮</p><p>  mv $1.gz $HOME/dustbin //移動(dòng)到回收站</p&g

41、t;<p>  echo “File $1 is deleted !”</p><p><b>  fi</b></p><p><b> ?。?) 設(shè)置權(quán)限</b></p><p>  [root@localhost bin]#chmod +x test2 (3) 運(yùn)行</p><

42、p>  [root@localhost bin]# test2 a (如果 a 文件在 bin 目錄下存在) File a is deleted!</p><p>  1-4 在 Shell 程序中的使用變量</p><p><b>  ??變量的賦值</b></p><p><b>  ??變量的訪問(wèn)</b>

43、;</p><p><b>  ??變量的輸入</b></p><p>  1-4-1 變量的賦值</p><p>  在 Shell 編程中,所有的變量名都由字符串組成,并且不需要對(duì)變量進(jìn)行聲明。要賦值給 一個(gè)變量,其格式如下:</p><p><b>  變量名=值</b></p>

44、<p><b>  注意:</b></p><p>  等號(hào)(=)前后沒(méi)有空格 例如:</p><p><b>  x=6</b></p><p>  a=”How are you ”</p><p>  表示把 6 賦值給變量 x,字符串“How are you ”賦值給變量 a。&

45、lt;/p><p>  1-4-2 訪問(wèn)變量值</p><p>  如果要訪問(wèn)變量值,可以在變量前面加一個(gè)美元符號(hào)“$”,例如:</p><p>  [root@localhost bin]#a=”How are you ”</p><p>  [root@localhost bin]#echo “He just said:$a”</

46、p><p>  He just said:How are you</p><p>  一個(gè)變量給另一個(gè)變量賦值可以寫成:</p><p>  變量 2=$變量 1</p><p><b>  例如:</b></p><p><b>  x=$i</b></p>&l

47、t;p><b>  i++可以寫成:</b></p><p><b>  i=$i+1</b></p><p>  1-4-3 鍵盤讀入變量值</p><p>  在 Shell 程序設(shè)計(jì)中,變量的值可以作為字符串從鍵盤讀入,其格式為:</p><p>  read 變量 例如:</p&

48、gt;<p>  [root@localhost bin]#read str</p><p>  read 為讀入命令,它表示從鍵盤讀入字符串到 str。</p><p>  實(shí)例 1-4:編寫一個(gè) Shell 程序 test3,程序執(zhí)行時(shí)從鍵盤讀入一個(gè)目錄名,然后 顯示這個(gè)目錄下所有文件的信息。</p><p><b>  分析:<

49、/b></p><p>  存放目錄的變量為 DIRECTORY,其讀入語(yǔ)句為:</p><p>  read DIRECTORY</p><p>  顯示文件的信息命令為:ls –a</p><p>  [root@localhost bin]#vi test3</p><p>  #! /bin/sh&l

50、t;/p><p>  echo “please input name of directory”</p><p>  read DIRECTORY cd $DIRECTORY ls –l </p><p><b>  (2)設(shè)置權(quán)限</b></p><p>  [root@localhost bin]#chmod +x t

51、est3 (3)執(zhí)行</p><p>  [root@localhost bin]#./test3</p><p><b>  注意:</b></p><p>  輸入路徑時(shí)需間隔符“/”</p><p><b>  結(jié)果。</b></p><p>  實(shí)例 1-5:運(yùn)行程

52、序 test4,從鍵盤讀入 x、y 的值,然后做加法運(yùn)算,最后輸出</p><p> ?。?)用 vi 編輯程序</p><p>  [root@localhost bin]#vi test4</p><p>  #! /bin/sh</p><p>  echo “please input x y”</p><p>

53、;  read x,y z=`expr $x+$y`</p><p>  echo “The sum is $z”</p><p><b> ?。?)設(shè)置權(quán)限</b></p><p>  [root@localhost bin]#chmod +x test4 (3)執(zhí)行</p><p>  [root@localhos

54、t bin]#./ test4</p><p><b>  45 78</b></p><p>  The sum is 123</p><p><b>  注意:</b></p><p>  表達(dá)式 total=`expr $total +$num`及 num=`expr $num +1`中的符

55、號(hào)“`”為鍵盤左上角的</p><p><b>  “`”鍵。</b></p><p><b>  1、特殊符號(hào)</b></p><p><b> ?。?)引用符號(hào)</b></p><p>  在bash中,許多字符有特殊的含義。如果希望bash忽略某些字符的特殊含義,可以使用

56、一種稱為“引用”的技術(shù),通知Shell暫時(shí)忽略被引用字符的特殊含義,將其作為普通字符處理。</p><p>  Shell在使用“引用”時(shí)用到三種字符:轉(zhuǎn)義符“\”、單引號(hào)“’”和雙引號(hào)“””</p><p>  引用符號(hào)1 — 轉(zhuǎn)義符“\”</p><p>  將轉(zhuǎn)義符“\”放在Shell特殊字符之前,則Shell忽略該字符原有的特殊含義。</p>

57、<p>  用這種方式時(shí),必須在每一個(gè)欲忽略其特殊含義的特殊字符之前添加一個(gè)“\”字符。</p><p>  引用符號(hào)2 — 單引號(hào)“’”</p><p>  將字符串放在一對(duì)單引號(hào)之間,則單引號(hào)內(nèi)的所有字符的特殊含義都被忽略,而只作為普通字符解釋。</p><p>  例1:下面兩條命令是等效的。</p><p>  # echo

58、 ‘f*?’</p><p>  # echo f\*\?</p><p><b>  例2:</b></p><p>  # string=‘$PATH’</p><p>  # echo $string</p><p><b>  $PATH</b></p>

59、<p><b>  例3:</b></p><p>  # name=liuhongqi’s home</p><p>  引用符號(hào)3 — 雙引號(hào)“””</p><p>  使用雙引號(hào)的引用與單引號(hào)的類似,括在雙引號(hào)內(nèi)的大部分特殊字符將被看作普通字符,但也有一些特殊字符即便用雙引號(hào)括起來(lái)之后仍然保留著其特殊的意義,比如$、\、”和`

60、。</p><p>  例:假定變量PATH的值為/usr/bin</p><p>  #string=“$PATH and \$PATH”</p><p>  #echo $string</p><p>  /usr/bin and $PATH</p><p> ?。?) 命令替換符“`”</p>

61、<p>  命令替換符“`”(反引號(hào))的作用跟引用字符的作用相反。反引號(hào)括起來(lái)的字符串被Shell解釋為命令行,在執(zhí)行時(shí),Shell首先執(zhí)行該命令行,并以它的標(biāo)準(zhǔn)輸出結(jié)果取代整個(gè)反引號(hào)(包括兩個(gè)反引號(hào))部分。</p><p>  這個(gè)字符所對(duì)應(yīng)的鍵一般位于鍵盤的左上角。</p><p><b>  例1:</b></p><p>&l

62、t;b>  # pwd</b></p><p><b>  /root</b></p><p>  # string=“Current directory is `pwd`”</p><p>  # echo $string</p><p>  Current directory is /root<

63、;/p><p><b>  例2:</b></p><p>  # today=`date`</p><p>  # echo Today is $today</p><p>  Today is Mon Jan 15 16:20:12 CST 2002</p><p>  2、expr 命令 <

64、;/p><p>  expr命令是一個(gè)手工命令行計(jì)數(shù)器,用于在UNIX/LINUX下求表達(dá)式變量的值,一般用于整數(shù)值,也可用于字符串。</p><p><b>  格式為:</b></p><p>  expr Expression</p><p>  (命令讀入Expression 參數(shù),計(jì)算它的值,然后將結(jié)果寫入到標(biāo)準(zhǔn)輸

65、出)</p><p><b>  參數(shù)應(yīng)用規(guī)則:</b></p><p><b>  用空格隔開每個(gè)項(xiàng);</b></p><p>  用 \ (反斜杠) 放在 shell 特定的字符前面;</p><p>  對(duì)包含空格和其他特殊字符的字符串要用引號(hào)括起來(lái)</p><p> 

66、 expr用法實(shí)例講解 </p><p><b> ?。?)整數(shù)運(yùn)算</b></p><p>  # expr 14 % 9</p><p><b>  5</b></p><p>  # expr 1000 + 900</p><p><b>  1900<

67、/b></p><p>  # expr 30 / 3 / 2</p><p><b>  5</b></p><p>  # expr 30 \* 3 (使用乘號(hào)時(shí),必須用反斜線屏蔽其特定含義。)</p><p><b>  90</b></p><p>  # ex

68、pr 30 * 3</p><p>  expr: Syntax error</p><p><b> ?。?)計(jì)算字串長(zhǎng)度</b></p><p>  # expr length “this is a test”</p><p><b>  14</b></p><p>&

69、lt;b> ?。?)增量計(jì)數(shù)</b></p><p>  說(shuō)明:expr在循環(huán)中用于增量計(jì)算。先將變量初始化為0,然后循環(huán)值加1,反引號(hào)的用法為命令替代。</p><p><b>  # LOOP=0</b></p><p>  # LOOP=`expr $LOOP + 1`</p><p>  1-5

70、 表達(dá)式的比較</p><p><b>  ??字符串操作符</b></p><p><b>  ??邏輯運(yùn)算符</b></p><p>  ??用 tes t 比較的運(yùn)算符</p><p><b>  ??數(shù)字比較符</b></p><p>

71、<b>  ??文件操作符</b></p><p>  在 Shell 程序中,通常使用表達(dá)式比較來(lái)完成邏輯任務(wù)。表達(dá)式所代表的操作符有字符操作 符、數(shù)字操作符、邏輯操作符、以及文件操作符。其中文件操作符是一種 Shell 所獨(dú)特的操作符。 因?yàn)?Shell 里的變量都是字符串,為了達(dá)到對(duì)文件進(jìn)行操作的目的,于是才提供了文件操作符。</p><p>  1-5-1

72、字符串比較</p><p>  作用:測(cè)試字符串是否相等、長(zhǎng)度是否為零,字符串是否為 NULL。 常用的字符串操作符如表 1-1所示.。</p><p>  表 1-1常用的字符串操作符</p><p>  實(shí)例 1-6:從鍵盤輸入兩個(gè)字符串,判斷這兩個(gè)字符串是否相等,如相等輸出。</p><p>  【例1】 字符串比較的使用。</

73、p><p>  # str1=abcd</p><p>  # test $str1 = abcd</p><p><b>  # echo $?</b></p><p>  【例2】 含有空格的字符串的比較。</p><p><b>  # strl=“”</b></p&

74、gt;<p>  # test $str1</p><p><b>  # echo $?</b></p><p>  # test “$str1”</p><p><b>  # echo $?</b></p><p>  # test –n “$str1”</p>&

75、lt;p><b>  # echo $?</b></p><p>  test 命令的測(cè)試功能</p><p>  test是Shell程序中的一個(gè)表達(dá)式,用test命令去判斷文件的存在與性質(zhì),變量的相互關(guān)系;如果條件為真,則返回一個(gè) 0 值。如果表達(dá)式不為真,則返回一個(gè)大于 0 的值, 也可以將其稱為假值。檢查最后所執(zhí)行命令的狀態(tài)的最簡(jiǎn)便方法是使用 $? 值。

76、</p><p>  test 命令期望在命令行中找到一個(gè)參數(shù),當(dāng) shell 沒(méi)有為變量賦值時(shí),則將該變量視為空。這意味著在處理腳本時(shí),一旦腳本尋找的參數(shù)不存在,則 test 將報(bào)告該錯(cuò)誤。</p><p>  test 和 [ 命令</p><p>  雖然 Linux 和 UNIX 的每個(gè)版本中都包含 test 命令,但該命令有一個(gè)更常用的別名 — 左方括號(hào):

77、[。test 及其別名通常都可以在 /usr/bin 或 /bin (取決于操作系統(tǒng)版本和供應(yīng)商)中找到。當(dāng)您使用左方括號(hào)而非 test 時(shí),其后必須始終跟著一個(gè)空格、要評(píng)估的條件、一個(gè)空格和右方括號(hào)。右方括號(hào)不是任何東西的別名,而是表示所需評(píng)估參數(shù)的結(jié)束。條件兩邊的空格是必需的,這表示要調(diào)用 test。</p><p>  test 和 [ 的語(yǔ)法如下:test expression</p>&l

78、t;p><b>  測(cè)試的標(biāo)志代表意義</b></p><p>  1. 關(guān)於某個(gè)檔名的『文件類型』判斷,如 test -e filename 表示存在否</p><p>  -e 該『檔名』是否存在?(常用)</p><p>  -f 該『檔名』是否存在且為文件(file)?(常用)</p><p>  -d 該

79、『檔名』是否存在且為目錄(directory)?(常用)</p><p>  -b 該『檔名』是否存在且為一個(gè) block device 裝置?</p><p>  -c 該『檔名』是否存在且為一個(gè) character device 裝置?</p><p>  -S 該『檔名』是否存在且為一個(gè) Socket 文件?</p><p>  -p

80、該『檔名』是否存在且為一個(gè) FIFO (pipe) 文件?</p><p>  -L 該『檔名』是否存在且為一個(gè)連結(jié)檔?</p><p>  2. 關(guān)於文件的權(quán)限偵測(cè),如 test -r filename 表示可讀否 (但 root 權(quán)限常有例外)</p><p>  -r 偵測(cè)該檔名是否存在且具有『可讀』的權(quán)限?</p><p>  -w

81、偵測(cè)該檔名是否存在且具有『可寫』的權(quán)限?</p><p>  -x 偵測(cè)該檔名是否存在且具有『可運(yùn)行』的權(quán)限?</p><p>  -u 偵測(cè)該檔名是否存在且具有『SUID』的屬性?</p><p>  -g 偵測(cè)該檔名是否存在且具有『SGID』的屬性?</p><p>  -k 偵測(cè)該檔名是否存在且具有『Sticky bit』的屬性?<

82、;/p><p>  -s 偵測(cè)該檔名是否存在且為『非空白文件』?</p><p>  3. 兩個(gè)文件之間的比較,如: test file1 -nt file2</p><p>  -nt (newer than)判斷 file1 是否比 file2 新</p><p>  -ot (older than)判斷 file1 是否比 file2 舊&

83、lt;/p><p>  -ef 判斷 file1 與 file2 是否為同一文件,可用在判斷 hard link 的判定上。主要意義在判定,兩個(gè)文件是否均指向同一個(gè) inode!</p><p>  4. 關(guān)於兩個(gè)整數(shù)之間的判定,例如 test n1 -eq n2</p><p>  -eq 兩數(shù)值相等 (equal)</p><p>  -ne

84、 兩數(shù)值不等 (not equal)</p><p>  -gt n1 大於 n2 (greater than)</p><p>  -lt n1 小於 n2 (less than)</p><p>  -ge n1 大於等於 n2 (greater than or equal)</p><p>  -le n1 小於等於 n2 (less

85、than or equal)</p><p>  5. 判定字串的數(shù)據(jù)</p><p>  test -z string 判定字串是否為 0 ?若 string 為空字串,則為 true</p><p>  test -n string 判定字串是否非為 0 ?若 string 為空字串,則為 false。</p><p>  注: -n 亦

86、可省略</p><p>  test str1 = str2 判定 str1 是否等於 str2 ,若相等,則回傳 true</p><p>  test str1 != str2 判定 str1 是否不等於 str2 ,若相等,則回傳 false</p><p>  6. 多重條件判定,例如: test -r filename -a -x filename<

87、/p><p>  -a (and)兩狀況同時(shí)成立!例如 test -r file -a -x file,則 file 同時(shí)具有 r</p><p>  與 x 權(quán)限時(shí),才回傳 true。</p><p>  -o (or)兩狀況任何一個(gè)成立!例如 test -r file -o -x file,則 file 具有 r</p><p>  或 x

88、權(quán)限時(shí),就可回傳 true。</p><p>  ! 反相狀態(tài),如 test ! -x file ,當(dāng) file 不具有 x 時(shí),回傳 true</p><p> ?。?)用 vi 編輯程序</p><p>  [root@localhost bin]#vi test5</p><p>  #! /bin/Bash read ar1<

89、/p><p><b>  read ar2</b></p><p>  [ “$ar1” = “$ar2” ]</p><p>  echo $? #?保存前一個(gè)命令的返回碼</p><p><b> ?。?)設(shè)置權(quán)限</b></p><p>  [root@loca

90、lhost bin]#chmod +x test5 (3)執(zhí)行</p><p>  [root@localhost root]#./ test5 aaa</p><p><b>  bbb</b></p><p><b>  1</b></p><p><b>  注意:</b&

91、gt;</p><p>  ”[”后面和”]”前面及等號(hào)“=“的前后都應(yīng)有一個(gè)空格;注意這里是程序的退出情況,</p><p>  如果 ar1 和 ar2 的字符串是不想等的非正常退出,輸出結(jié)果為 1。</p><p>  實(shí)例 1-7: 比較字符串長(zhǎng)度是否大于零</p><p> ?。?)用 vi 編輯程序</p><

92、p>  [root@localhost bin]#vi test6</p><p>  #! /bin/Bash read ar</p><p>  [ -n “$ar” ]</p><p>  echo $? //保存前一個(gè)命令的返回碼</p><p><b> ?。?)設(shè)置權(quán)限</b></p>

93、<p>  [root@localhost bin]#chmod +x test6</p><p><b> ?。?)執(zhí)行</b></p><p>  [root@localhost bin]#./ test6</p><p><b>  0</b></p><p><b&g

94、t;  注意:</b></p><p>  運(yùn)行結(jié)果 1 表示 ar 的小于等于零,0 表示 ar 的長(zhǎng)度大于零。</p><p>  1-5-2 數(shù)字比較</p><p>  在 Bash Shell 編程中的關(guān)系運(yùn)算有別于其他編程語(yǔ)言,用表 1-2 中的運(yùn)算符用 test 語(yǔ)句 表示大小的比較。</p><p>  表 1-2

95、 用 test 比較的運(yùn)算符</p><p>  運(yùn)算符號(hào) 含 義</p><p><b>  -eq 相等</b></p><p><b>  -ge 大于等于</b></p><p><b>  -le 小于等于</b></p><p>&

96、lt;b>  -ne 不等于</b></p><p><b>  -gt 大于</b></p><p><b>  -lt 小于</b></p><p>  實(shí)例 1-8:比較兩個(gè)數(shù)字是否相等</p><p> ?。?)用 vi 編輯程序</p><p&g

97、t;  [root@localhost bin]#vi test7</p><p>  #! /bin/Bash read x,y</p><p>  if test $x –eq $y then</p><p>  echo “$x=$y”</p><p><b>  else</b></p><

98、p><b>  fi</b></p><p>  echo “$x!=$y”</p><p><b> ?。?)設(shè)置權(quán)限</b></p><p>  [root@localhost bin]#chmod +x test7</p><p><b> ?。?)執(zhí)行</b>&

99、lt;/p><p>  [root@localhost bin]#./ test7</p><p><b>  50 100</b></p><p><b>  50!=100</b></p><p>  [root@localhost bin]#./ test7</p><p&

100、gt;<b>  150 150</b></p><p><b>  150= =150</b></p><p>  1-5-3 邏輯操作</p><p>  在 Shell 程序設(shè)計(jì)中的邏輯運(yùn)算符如表 1-3 所示。</p><p>  1-3 Shell 中的邏輯運(yùn)算符</p>

101、<p>  實(shí)例 1-9:分別給兩個(gè)字符變量賦值,一個(gè)變量賦予一定的值,另一個(gè)變量為空,</p><p>  求兩者的與、或操作。</p><p> ?。?)用 vi 編輯程序</p><p>  [root@localhost bin]#vi test8</p><p>  #! /bin/Bash part1 =”1111”&

102、lt;/p><p>  part2 =” ” #part2 為空</p><p>  [ “$ part1” –a “$ part2”]</p><p>  echo $? #保存前一個(gè)命令的返回碼</p><p>  [ “$ part1” –o “$ part2”]</p><p><b>  echo

103、$?</b></p><p><b> ?。?)設(shè)置權(quán)限</b></p><p>  [root@localhost bin]#chmod +x test8</p><p><b> ?。?)執(zhí)行</b></p><p>  [root@localhost bin]#./ test8

104、</p><p><b>  1</b></p><p><b>  0</b></p><p>  1-5-4 文件操作</p><p>  文件測(cè)試操作表達(dá)式通常是為了測(cè)試文件的信息,一般由腳本來(lái)決定文件是否應(yīng)該備份、 復(fù)制或刪除。由于 test 關(guān)于文件的操作符有很多,在表 1-4 中只列舉一

105、些常用的操作符。</p><p>  表 1-4 文件測(cè)試操作符</p><p>  實(shí)例 1-10:判斷 zb 目錄是否存在于/root 下。</p><p> ?。?)用 vi 編輯程序</p><p>  [root@localhost bin]#vi test9</p><p>  #! /bin/Bash

106、</p><p>  [ -d /root/zb ]</p><p>  echo $? #保存前一個(gè)命令的返回碼</p><p><b>  (2)設(shè)置權(quán)限</b></p><p>  [root@localhost bin]#chmod +x test9 (3)執(zhí)行</p><p>  [

107、root@localhost bint]#./ test9</p><p>  (4)在/root 添加 zb 目錄</p><p>  [root@localhost bin]#mkdir zb</p><p><b>  (5)執(zhí)行</b></p><p>  [root@localhost bin]#./test

108、9</p><p><b>  0</b></p><p><b>  注意:</b></p><p>  運(yùn)行結(jié)果是返回參數(shù)“$?”,結(jié)果 1 表示判斷的目錄不存在,0 表示判斷的目錄不存在。</p><p>  實(shí)例 1-11:編寫一個(gè) Shell 程序 test10,輸入一個(gè)字符串,如果是目錄

109、,則顯示</p><p>  目錄下的信息,如為文件顯示文件的內(nèi)容。</p><p> ?。?)用 vi 編輯程序</p><p>  [root@localhost bin]#vi test10</p><p>  #! /bin/Bash</p><p>  echo “Please enter the dire

110、ctory name or file name”</p><p><b>  read DORF</b></p><p>  if [ -d $DORF ]</p><p><b>  then</b></p><p><b>  ls $DORF</b></p>

111、<p>  elif [ -f $DORF ]</p><p><b>  then</b></p><p><b>  cat $DORF</b></p><p><b>  else</b></p><p>  echo “input error! ”</

112、p><p><b>  fi</b></p><p><b> ?。?)設(shè)置權(quán)限</b></p><p>  [root@localhost bin]#chmod +x test10</p><p><b> ?。?)執(zhí)行</b></p><p>  [r

113、oot@localhost bin]#./ test10</p><p>  1-6 循環(huán)結(jié)構(gòu)語(yǔ)句</p><p>  ??Shell 的循環(huán)語(yǔ)句</p><p>  Shell 常見(jiàn)的循環(huán)語(yǔ)句有 for 循環(huán)、while 循環(huán)語(yǔ)句和 until 循環(huán)。</p><p>  1-6-1 for 循環(huán)</p><p&

114、gt;<b>  語(yǔ)法:</b></p><p>  for 變量 in 列表</p><p><b>  do</b></p><p><b>  操作</b></p><p><b>  done</b></p><p><

115、;b>  注意:</b></p><p>  變量要在循環(huán)內(nèi)部用來(lái)指列表當(dāng)中的對(duì)象。</p><p>  列表是在 for 循環(huán)的內(nèi)部要操作的對(duì)象,可以是字符串也可以是文件,如果是文件則為文件 名。</p><p><b>  兩行輸出。</b></p><p>  實(shí)例 1-12:在列表中的值:a,b

116、,c,e,I,2,4,6,8 用循環(huán)的方式把字符與數(shù)字分成</p><p> ?。?)用 vi 編輯腳本程序 test11 [root@localhost bin]#vi test11</p><p>  #! /bin/Bash</p><p>  for i in a,b,c,e,I 2,4,6,8 do</p><p>  echo

117、 $i done</p><p><b> ?。?)設(shè)置權(quán)限</b></p><p>  [root@localhost bin]#chmod +x test11</p><p><b> ?。?)執(zhí)行</b></p><p>  [root@localhost bin]#./ test11 a

118、,b,c,e,i</p><p><b>  2,4,6,8</b></p><p><b>  注意:</b></p><p>  在循環(huán)列表中的空格可表示換行。</p><p>  實(shí)例 1-13:刪除垃圾箱中的所有文件。</p><p>  分析:在本機(jī)中,垃圾箱的位置

119、是在$HOME/.Trash 中,因而是在刪除$HOME/.Trash 列表當(dāng) 中的所有文件,程序腳本如下。</p><p> ?。?)用 vi編輯腳本程序 test12 [root@localhost bin]#vi test12</p><p>  #! /bin/Bash</p><p>  for i in $HOME/.Trash/*</p>

120、<p><b>  do</b></p><p><b>  rm $i</b></p><p>  echo “$i has been deleted!”</p><p><b>  done</b></p><p><b> ?。?)設(shè)置權(quán)限<

121、/b></p><p>  [root@localhost bin]#chmod +x test12</p><p><b> ?。?)執(zhí)行</b></p><p>  [root@localhost bin]#./ test12</p><p>  /root/.Trash/abc~ has been del

122、eted!</p><p>  /root/.Trash/abc1 has been deleted!</p><p>  實(shí)例 1-14:求從 1~100 的和。</p><p> ?。?)用 vi 編輯腳本程序 test13 [root@localhost bin]#vi test13</p><p>  #! /bin/Bash<

123、;/p><p>  total =0 for((j=1;j<=100;j++)); do</p><p>  total=`expr $total + $j`</p><p><b>  done</b></p><p>  echo “The result is $total”</p><p>

124、;<b> ?。?)設(shè)置權(quán)限</b></p><p>  [root@localhost bin]#chmod +x test13</p><p><b> ?。?)執(zhí)行</b></p><p>  [root@localhost bin]#./ test13</p><p>  The res

125、ult is 5050</p><p><b>  注意:</b></p><p>  for 語(yǔ)句中的雙括號(hào)不能省,最后的分號(hào)可有可無(wú),表達(dá)式 total=`expr $total + $j`的加 號(hào)兩邊的空格不能省,否則會(huì)成為字符串的連接。</p><p>  1-6-2 while 循環(huán)</p><p><b

126、>  語(yǔ)法:</b></p><p><b>  while 表達(dá)式</b></p><p><b>  do</b></p><p><b>  操作</b></p><p><b>  done</b></p><

127、p>  只要表達(dá)式為真,do 和 done 之間的操作就一直會(huì)進(jìn)行。</p><p>  實(shí)例 1-15:用 while 循環(huán)求 1~100 的和。</p><p>  (1)用 vi 編輯腳本程序 test14 [root@localhost bin]#vi test13 total =0</p><p>  num=0 while((num<=10

128、0));</p><p><b>  do</b></p><p><b>  done</b></p><p>  total=`expr $total +$ num`</p><p>  num=`expr $num + 1`</p><p>  echo “The re

129、sult is $total”</p><p><b> ?。?)設(shè)置權(quán)限</b></p><p>  [root@localhost bin]#chmod +x test14 (3)執(zhí)行</p><p>  [root@localhost bin]#./ test14</p><p>  The result is

130、 5050</p><p>  1-6-3 until 循環(huán)</p><p><b>  語(yǔ)法:</b></p><p><b>  until 表達(dá)式</b></p><p>  do 操作 done</p><p>  重復(fù) do 和 done 之間的操作直到表達(dá)式成立為

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論