1. 程式人生 > >C語言學習(四)shell指令碼

C語言學習(四)shell指令碼

       Linux系統中的Shell種類眾多,常見的有bash、csh以及ksh等。不同的Shell語法有所不同,不能互換使用,但每種Shell都有其特色之處。這裡我們選擇bash來講述Shell指令碼程式設計的基礎知識。Shell命令可以事先寫在一個檔案中,使用時Shell讀取檔案中的命令逐條解釋,這種檔案被稱為指令碼。

1.編寫一個Shell指令碼

編寫一個簡單的Shell指令碼,輸出字串Hello Word。
hello.sh注意:echo命令的功能是在螢幕上顯示一段文字,後面的字串可以加引號,也可以不加引號。如果加引號,將字串原樣輸出;如果不加引號,將字串中的各個單詞用一個空格來分割。
指令碼檔案編輯完成之後,將其儲存為test.sh。在執行指令碼之前,需要將其屬性改為可執行的,如下所示:
chmod +x test.sh
執行指令碼的方法為:./test.sh
 

Shell指令碼就是將一系列的Linux命令放在一個檔案中執行的實用程式。Shell指令碼可以利用vim等文字編輯器來編寫。Shell指令碼的格式是固定的,如下所示:
#!/bin/bash                                             #指定解釋執行該指令碼檔案的Shell程式
# 註釋
命令…
注:一行未完成,可以在行尾加上“\”字元,表示與下一行合併為一行。

2.特殊字元

引號分為雙引號、單引號和反引號。
1、由雙引括起來的字元,除$、`(反引號)和\保留其特殊功能外,其餘全為普通字元號
例如:
(1)$用於變數的引用;
變數的定義引用和清除:

STR=“Hello world”         #對變數STR進行賦值
                      echo $STR或echo ${STR}  #用$對其進行引用
                      unset STR                        #清除STR變數 


(2)echo“現在的地址是`pwd`”,輸出結果為:現在的地址是/root(`pwd`被解釋為命令);
(3)\為轉義字元,使用-e進行解析,如:echo -e "a\nd"       //  \n自動換行
另外,在某個字元前面利用反斜槓(\)能夠阻止shell把後面的字元解釋為特殊字元。
2、單引號內部不能使用$、`(反引號)和\,都作為普通字元對待。 

3.常用指令碼命令

echo ${#STR}                                    #計算長度(字母個數) 
echo ${STR:1:3}                                 #顯示第2,3,4個字元
echo “`expr index “$STR” 23`”       #在變數STR中23 誰先出現 顯示誰位置
陣列:
array1=(0 1 2 3 4)                                     #3種定義賦值陣列(圓括號)
echo ${array1[0]}                                     #顯示陣列值
echo ${#array1[@]}或echo ${#array1[*]} #計算陣列長度
 
算數運算:
c=`expr $a + $b`                           #.sh中的加減乘除
c=`expr $a \* $b`                          #.sh中的乘法

 4.數值測試

數值測試可用的操作符包括:
-eq:兩個數相等;(=)
-ne:兩個數不相等;(!=)
-gt:第一個數大於第二個數;(>)
-lt:第一個數小於第二個數;(<)
-le:第一個數小於等於第二個數;(<=)
-ge:第一個數大於等於第二個數。(>=)

5.字串測試

字串測試的主要操作符包括:
==:兩個字串相等;
!=:兩個字串不等;
-z:字串為空;
-n:字串不為空。 

6.結構控制語句

 if語句用來實現條件分支結構,它的一般格式為:
     if 條件1
     then  
            命令1
     elif條件2
     then  
            命令2
     else  
            命令3
     fi
 
注意:if語句以它的反寫fi結尾。如果條件1成立,則執行then後面的命令1;如果條件1不成立,但條件2成立,則執行命令2;如果兩個條件都不成立,則執行命令3。

 

 for迴圈的一般格式為:
     for變數名in [列表]
          do
              命令1  命令2  …
     done
 
     在for迴圈中,使用變數名來遍歷列表中所有取值,當變數值在列表中時,即執行一次所有命令。for迴圈的程式流程

 while迴圈的一般格式為:
     while 條件
          do  
              命令1  命令2  ...
     done
 
     當條件成立時,do和done之間的命令才會被執行,執行完成後重新測試條件,如果不成立則終止迴圈。while迴圈的程式流程