SHELL腳本基礎講解

1.Shell腳本概念

       1.定義:shell script 是利用shell的功能所寫的一個“程序”,這個程序是使用純文本文件,將一些shell的語法和命令寫在裏面,搭配成正則表達式、管道命令和數據流重定向等功能。以達到我們所想要的目的。

       2.範例

[root@localhost ~]# vim 01.sh
#!/bin/bash
#a simple example !
#
echo "please input your name: "
read Name
echo "Hello , $Name !!!"

       解析:

       在shell腳本中,我們一般會把 #!/bin/bash 放在第一行,這樣當我們未指明運行的shell時,系統會默認的以bash來運行。在shell中我們通常把#放在一行的開頭作爲該行的註釋。echo 命令能夠將後面的內容打印出來而read命令能夠要求用戶輸入一個數值,而shell會默認的將該數值賦給變量Name,在下文我將進行詳細的闡述。


2.變量的概念

       在上面的示例中我們提到了變量的概念,那變量到底是什麼呢?變量實際上是指可利用的內存空間,它限制了數據存儲的格式和數據的表示範圍。在shell中變量主要有以下幾種:

本地變量:只對當前shell進程有效。                定義方式: [set] VAR_Name=value      其中set可以省略。

局部變量:只在局部程序內有效。                    定義方式:  local VAR_Name=value

環境變量:對當前shell及其子shell有效。       定義方式:  export VAR_Name=value

       當然系統中還默認有許多環境變量,我們可以通過 env 在命令行界面下查看。而要查看當前shell中所有的變量,我們可以使用 set 命令。

位置變量:$0  $1  $2  ...

       $0             默認情況下表示當前的shell,如果在腳本中執行能夠輸出當前腳本名稱。

       $1,$2...    表示位置變量,能夠輸出所在位置中變量的值

特殊變量:$?  $$  $#  $@  $* ...

       $?            表示當前環境中命令執行的返回狀態

       $$            表示當前shell的進程ID

       $#            表示當前環境中位置變量的個數

       $@,$*      能夠打印出當前環境中位置變量的內容

在shell環境中我們可以通過 unset 命令對定義的變量進行撤銷。


3.變量的相關聲明

       bash實際上是一種交互式的接口,同時也提供了相關的編程環境;bash提供的是一種弱類型的語言,它不強制區分變量類型,無論存儲什麼數據,默認均以字符格式存儲。在使用變量的過程中我們不需要事先聲明。用到時直接賦值即可。但是在一定的環境中我們也可以對其進行聲明。在bash中我們通常使用declare命令,格式如下:

declare -i VAR_Name     聲明一個整形變量
declare -a VAR_Name     聲明一個數組
declare -x VAR_Name     聲明一個環境變量
declare -r VAR_Name     將變量聲明爲只讀(readonly)



4.變量的引用

       格式如下:

${VAR_Name}             $加上一個大括號,中間引用變量名

       有的時候我們需要在輸入的語句中引用變量的值,這個時候我們爲保證得到的是變量值通常在引用的時候加上雙引號。在shell中,雙引號引用被稱爲弱引用,可以實現變量值的正常替換,而單引號引用被稱爲強引用,引號的內容原樣輸出,在某些時候我們需要在腳本中引用某些命令的執行結果,這個時候我們會使用反引號。以上就是引號在shell腳本中的相關作用。希望大家在使用的過程中不要混淆。

       有的時候我們在腳本的編寫過程會用到數組,但不是很常用。在這裏我做一下簡單的介紹:

XX=(aa bb cc dd)            #定義一個屬組XX
echo ${XX[2]}               #輸出數組中下標爲2的數組元素的值,這裏爲cc                   
echo ${XX[*]}               #將屬組中所有的元素打印出來
echo ${XX[@]}               #效果和 echo ${xx[*]} 相同
echo ${!XX[@]}              #打印出數組中所有元素的下標
echo ${#XX[@]}              #打印屬組中元素個數


5.shell腳本語法檢查與調試

   可以通過bash進行,語法格式如下:

bash -n *.sh            #檢查腳本中的語法錯誤(不真正執行腳本)
bash -x *.sh            #調試執行腳本


6.算術運算

   注意:shell不支持浮點數,計算結果中的浮點數默認的會被圓整爲整數。

   算術運算的實現方式(有以下4種):

       $[expression]            C=$[$A+$B]

       $((expression))          C=$(($A-$B))

       let expression           let C=$A*$B

       expr expression          C=`expr $A / $B`

 示例:聲明2個變量Num1和Num2,用四種方式打印出他們之間的和。

#!/bin/bash
Num1=13
Num2=7
let C=$Num1+$Num2
echo "$Num1+$Num2=$[$Num1+$Num2]"
echo "$Num1+$Num2=$(($Num1+$Num2))"
echo "$Num1+$Num2=$C"
echo "$Num1+$Num2=`expr $Num1 + $Num2`"


7.條件測試與判斷

               1.整數測試

                      expression [ 數值1 比較符號 數值2 ]

比較符號含義
-gt大於
-ge大於或等於
-eq等於
-lt

-le小於或等於
-ne不等於

      2.字符測試

                       expression [ 數值1 比較符號 數值2 ]

比較符號含義
>大於
<小於
==等於
=~模式匹配
-z $string判斷是否爲空
-n $string判斷是否不空

              3.組合測試條件

條件符號命令連接
-a&&
-o||
!!




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章