簡單而有效的Linux Shell腳本示例(續一)
Linux提供了具有強大功能的各種功能強大的Shell,包括Bash,Zsh,Tcsh和Ksh。這些Shell程序最令人驚奇的功能之一就是它們的可編程性。創建簡單而有效的Linux Shell腳本來處理日常工作非常容易。此外,對這一主題的了解將使您成為Linux的高級用戶。請和我們一起對Unix Shell腳本進行詳細介紹。簡單而有效的Linux Shell腳本示例(1-9)見 :
https://os.51cto.com/art/202004/614978.htm
10. 使用AND運算符
AND運算符允許我們的程序一次檢查是否滿足多個條件。用AND運算符分隔的所有部分都必須為true。否則,包含AND的語句將返回false。查看以下bash腳本示例,以更好地了解AND的工作原理。
- #!/bin/bash
- echo -n "輸入數字:"
- read num
- if [[ ( $num -lt 10 ) && ( $num%2 -eq 0 ) ]]; then
- echo "您剛才輸入的是偶數:$num"
- else
- echo "您剛才輸入的是奇數:$num"
- fi
11. 使用“OR”運算符
OR運算符是另一個至關重要的結構,它使我們能夠在腳本中實現復雜而強大的編程邏輯。與AND相反,由OR運算符組成的語句在其任何一個操作數為true時均返回true。僅當由OR分隔的每個操作數為false時,它才返回false。
- #!/bin/bash
- echo -n "輸入任何數字:"
- read n
- if [[ ( $n -eq 25 || $n -eq 50 ) ]]
- then
- echo "你贏了"
- else
- echo "你輸了"
- fi
這個簡單的示例演示了OR運算符如何在Linux Shell腳本中工作。僅當用戶輸入數字25或50時,它才宣布用戶為贏家。符號代表“or”運算符。
12. 使用Elif
elif語句代表else if,并為實現鏈邏輯提供了一種方便的方法。通過評估以下示例,了解elif的工作原理。
- #!/bin/bash
- echo -n "輸入一個數字: "
- read num
- if [[ $num -gt 20 ]]
- then
- echo "數字大于20."
- elif [[ $num -eq 20 ]]
- then
- echo "數字等于20."
- else
- echo "數字小于20."
- fi
上面的程序是不言自明的,因此我們不再逐行進行剖析。你更改腳本的某些部分(例如變量名和值)以檢查它們如何一起工作。
13. 多分支選擇結構
多分支選擇結構是Linux bash腳本提供的另一個大特性。它可以在需要嵌套條件的地方使用,但是您不希望使用復雜的if-else-elif鏈。那請看下一個例子。
條件寫在case和esac關鍵字之間。 *)用于匹配除100和200以外的所有輸入。
14. 命令行參數
在許多情況下,直接從命令shell獲取參數可能是有益的。下面的示例演示如何在bash中執行此操作。
- #!/bin/bash
- echo "參數總數 : $#"
- echo "第1個參數 = $1"
- echo "第2個參數 = $2"
echo "第2個參數 = $2"在其名稱之后,使用兩個附加參數運行此腳本。我將其命名為linuxidc.com.sh,并且調用過程概述如下。
- [linuxidc@linux:~/www.linuxidc.com]$ ./linuxidc.com.sh linuxidc.com linuxidc ubuntu
因此,$1用于訪問第一個參數,$2用于訪問第二個參數,依此類推。$#用于獲取參數的總數。
15. 獲取帶有名稱的參數
下面的示例演示如何獲取帶有名稱的命令行參數。
- #!/bin/bash
- for arg in "$@"
- do
- index=$(echo $arg | cut -f1 -d=)
- val=$(echo $arg | cut -f2 -d=)
- case $index in
- A) a=$val;;
- B) b=$val;;
- *)
- esac
- done
- ((result=a+b))
- echo "A+B=$result"
echo "A+B=$result"將此腳本命名為linuxidc.com.sh并按如下所示進行調用。
- [linuxidc@linux:~/www.linuxidc.com]$ ./linuxidc.com.sh A=200 B=70
它應該返回A+B=270。此處的參數存儲在' $@ '內,腳本使用Linux cut命令獲取它們。
16. 連接字符串
字符串處理對于各種現代bash腳本至關重要。值得慶幸的是,它在bash中使用起來更加舒適,并且允許使用一種更加精確,簡潔的方式來實現此目的。請參閱以下示例,快速瀏覽bash字符串連接。
- #!/bin/bash
- string1="Linux"
- string2="公社"
- string3="(www.linuxidc.com)"
- string=$string1$string2$string3
- echo "$string 為Linux愛好者提供海量技術教程。"
echo "$string 為Linux愛好者提供海量技術教程。"以下程序輸出字符串“Linux公社(www.linuxidc.com) 為Linux愛好者提供海量技術教程。”如下圖:
17. 切片字符串
與許多編程語言相反,bash不提供用于切片字符串部分的任何內置函數。下面的示例演示如何使用參數擴展來完成此操作。
- #!/bin/bash
- Str="Learn Bash Commands from linuxidc.com"
- subStr=${Str:0:20}
- echo $subStr
這個腳本應該輸出“Learn Bash Commands”。參數擴展采用${VAR_NAME:S:L}的形式。在此,S表示起始位置,L表示長度。
18. 使用cut提取子字符串
可以在腳本內部使用Linux cut命令來“剪切”一部分字符串,也就是子字符串。下一個示例顯示了如何完成此操作。
- #!/bin/bash
- Str="Learn Bash Commands from linuxidc.com"
- #subStr=${Str:0:25}
- subStr=$(echo $Str| cut -d ' ' -f 1-4)
- echo $subStr
19. 兩個值相加
在Linux Shell腳本中執行算術運算非常容易。下面的示例演示如何從用戶接收兩個數字作為輸入并將其相加。
- #!/bin/bash
- echo -n "輸入第一個數字:"
- read a
- echo -n "輸入第2個數字:"
- read b
- (( sum=a+b ))
- echo "相加的結果=$sum"
如您所見,在bash中添加數字相當簡單。