shell 脚本编写使用
目錄
- 一、什么是shell 腳本
- 二、shell 腳本寫法
- 三、shell 腳本語法
- 1、第一個 shell 腳本
- 2、read命令
- 3、數值計算
- 4、test命令
- 5、中括號判斷符
- 6、默認變量
- 7、條件判斷
- 8、函數
- 9、循環
一、什么是shell 腳本
終端中輸入一系列命令完成一些操作,但是我們一條一條輸入命令,這樣就會很麻煩,shell腳本可以將很多條命令放到一個文件里面,然后直接運行。
shell 腳本類似 windows 的批處理文件,shell 腳本就是將連續執行的命令寫成一個文件。
shell 腳本提供數組、循環、條件判斷等功能。shell 腳本一般是 Linux 運維、測試、系統管理員需要掌握的。
二、shell 腳本寫法
shell 腳本是個純文本文件,命令從上而下,一行一行地開始執行。
shell 腳本拓展名為.sh。shell 腳本第一行一定要為:
三、shell 腳本語法
1、第一個 shell 腳本
我們在終端輸入:
使用 shell 腳本:
給shell腳本可運行權限:
chmod 777 first.sh 或者 chmod +x first.sh2、read命令
腳本:
#!/bin/bash echo "please input name and your age:" read name age #讀取鍵盤輸入字符串,賦值給變量 name 和 age echo "your name:" $name ",your age: $age" # shell 腳本輸出變量:$變量名執行結果:
腳本(-p提示符):
執行結果:
3、數值計算
shell 僅支持整型,數值計算使用$((表達式)),示例:
#!/bin/bash read -p "please input operand and number: " operand number echo "$operand + $number = $(($operand+$number))" echo "$operand - $number = $(($operand - $number))" echo "$operand * $number = $(($operand * $number))" divided=$(($operand/$number)) #賦值等號間不能有空格! echo "$operand / $number = $divided"執行結果:
4、test命令
test命令用于查看文件是否存在、權限等信息,可以進行數值、字符和文件三方面的測試。
cmd1 && cmd2 #當 cmd1 執行完畢且正確,那么 cmd2 執行,當 cmd1 執行完畢且錯誤,那么 cmd2 不執行cmd1 || cmd2 #當 cmd1 執行完畢且正確,那么 cmd2 不執行,當 cmd1 執行完畢且錯誤,那么 cmd2 執行字符串相等測試:
#!/bin/bash read -p "please input first string: " firstStr read -p "please input second string: " secondStr test $firstStr = $secondStr && echo "The two strings are the same" || echo "The two strings are not the same" # test str1 = str2 :兩個字符串相等則為真執行結果:
文件存在測試:
執行結果:
5、中括號判斷符
字符串判斷:
#!/bin/bash read -p "please input first string: " firstStr read -p "please input second string: " secondStr [ "$firstStr" == "$secondStr" ] && echo "The two strings are the same" || echo "The two strings are not the same" # 中括號兩端內測要加空格,內容建議加 "",否則有空格時會出現參數過多 [ "$firstStr" != "$secondStr" ] && echo "The two strings are not the same" || echo "The two strings are the same" [ "$firstStr" = "$secondStr" ] && echo "The two strings are the same" || echo "The two strings are not the same" echo firstStr: $firstStr echo secondStr: $secondStr執行結果:
6、默認變量
$0 ~ $n,表示 shell 腳本的執行參數,包括 shell 腳本執行命令本身,shell 腳本執行命令本身為$0。
$#表示最后一個參數的標號。
$@表示除$0外的所有參數。
很像main函數的argc、argv兩個參數。
示例:
#!/bin/bash echo "The zero parameter :"$0 echo "The first parameter :"$1 echo "The second parameter:"$2 echo "The label of the last parameter:"$# echo "All parameters :"$@執行結果:
7、條件判斷
shell 腳本支持條件判斷,雖然可以通過&&和||來實現簡單的條件判斷,但是稍微復雜一點的場景就不適合了。shell 腳本提供了if then條件判斷語句:
if 條件判斷;then# 判斷成立后要執行的語句 fi # 結束語句--------------------------------------------------------------------if 條件判斷; then# 條件判斷后成立要執行的語句 else# 條件判斷后不成立要執行的語句 fi--------------------------------------------------------------------if 條件判斷; then# 條件判斷后成立要執行的語句 elif 條件判斷;then # 此語句可多次添加# 條件判斷后成立要執行的語句 else# 條件判斷后不成立要執行的語句 fi--------------------------------------------------------------------case $變量 in # 與 C語言 switch case 相似 "第一個變量內容")# 程序段;; # 表示第一個程序塊結束 "第二個變量內容")# 程序段;; # 表示第二個程序塊結束 "第n個變量內容")# 程序段;; # 表示第 n個程序塊結束 *) # 類似 C語言 switch case的 default# 程序段;; esac例一:
#!/bin/bashread -p "please input(Y/N):" valueif [ "$value" == "Y" ] || [ "$value" == "y" ]; thenecho "your input is Y"exit 0 fiif [ "$value" == "N" ] || [ "$value" == "n" ]; thenecho "your input is N"exit 0 fi結果:
例二:
#!/bin/bashcase $1 in"a")echo "param is :a";;"b")echo "param is :b";;*)#這里通配符不能加上引號 加上就代表字符*了echo "can't identify";; esac結果:
8、函數
function fname(){ # function 可寫可不寫# 函數代碼段 }fname # 函數調用fname param1 param2 # 函數傳參函數傳參用法示例:
#!/bin/bash fun1(){echo "$0"echo "param1:$1"echo "param2:$2"echo "$#"echo "$@" }fun1 lcx1 lcx2 #函數調用和傳參執行結果:
可以看出,$n $# $@表示函數相應傳參值,$0仍然表示 shell 腳本第0個參數。
9、循環
while 條件 # 條件狀態為判斷式,條件成立時循環,直到條件不成立 do # 循環開始# 循環代碼段 done--------------------------------------------------------------------until 條件 # 條件狀態為判斷式,條件不成立時循環,直到條件成立 do # 循環開始# 循環代碼段 done--------------------------------------------------------------------for var in con1 con2 con3 ...... do# 循環代碼段 done # 變量 var 循環變化,第一次循環等于 con1,第二次循環等于 con2,以此類推--------------------------------------------------------------------for((初始值;限制值;執行步長)) do# 循環代碼段 done # 用法類似于 C語言 for循環while 循環示例:
for 循環示例1:
#!/bin/bash for name in lcx1 lcx2 lcx3 doecho "name = $name" done執行結果(for 循環了三次):
for 循環示例2:
#!/bin/bash for((count=0;count<=10;count++)) doecho "$count" done執行結果:
總結
以上是生活随笔為你收集整理的shell 脚本编写使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 扫雷游戏网页版_如何成为扫雷高手,数学老
- 下一篇: (转载)十四步实现拥有强大AI的五子棋游