shell指令碼基本操作
阿新 • • 發佈:2020-11-03
概述:
Shell是一個命令直譯器,它的作用是解釋執行使用者輸入的命令及程式等。 使用者每輸入一條命令,Shell就執行一條。這種從鍵盤輸入命令,就可以立即得到迴應的對話方式,稱為互動的方式。
當命令或程式語句不在命令列下執行,而是通過一個程式檔案來執行時,該程式檔案就被稱為Shell指令碼
分支判斷
#int型別_變數大小判斷 a=10 b=20 if [ $a == $b ] then echo "a 等於 b" elif [ $a -gt $b ] then echo "a 大於 b" elif [ $a -lt $b ] then echo "a 小於 b" elseecho "沒有符合的條件" fi #字串判斷(adc可以為變數) if [ -n 'abc' ];then echo "字串長度大於0" elif [ -z 'abc' ];then echo "字串長度為0" elif [ 'abc' = 'abc' ];then echo "兩個字串相等" elif [ 'abc' != 'abc' ];then echo "兩個字串不相等" fi #____多條件判斷____________ a=20 b="dalan_123" #統計字串長度 echo ${#b} if (( $a > 10 && ${#b} > 20 ));then echo "兩個條件同時滿足" elif (( $a > 10 || ${#b} > 20 ));then echo "滿足一個就執行" else echo "條件不滿足" fi #if巢狀 aa=100 if [ $aa -gt 50 ];then echo "$aa 大於50" if (( $aa % 2 == 0 ));then #兩種操作方式 echo "$(($aa+120))" echo "$[$aa+120]" echo"$aa %2= $[$aa%2]" fi else echo "$aa 不小於50" fi #從鍵盤接收資料判並判斷 read age if (( $age <= 2 )); then echo "嬰兒" elif (( $age >= 3 && $age <= 8 )); then echo "幼兒" elif (( $age >= 9 && $age <= 17 )); then echo "少年" elif (( $age >= 18 && $age <=25 )); then echo "成年" elif (( $age >= 26 && $age <= 40 )); then echo "青年" elif (( $age >= 41 && $age <= 60 )); then echo "中年" else echo "老年" fi #檔案比較 if [ -e test.html ];then echo "test.html存在" elif [ -d test.html ];then echo "test.html是目錄" elif [ -f test.html ];then echo "test.html存在,並且是一個普通檔案" elif [ -c test.txt ];then echo "檔案存在特殊字元" elif [ -n test.txt ];then echo "檔案為空" else echo "不知道,拜拜" fi
字串操作
#!/bin/bash #字串拼接(連線、合併) name="Shell" url="http://c.biancheng.net/shell/" str1=$name$url #中間不能有空格 str2="$name $url" #如果被雙引號包圍,那麼中間可以有空格 str3=$name": "$url #中間可以出現別的字串 str4="$name: $url" #這樣寫也可以 str5="${name}Script: ${url}index.html" #這個時候需要給變數名加上大括號 echo $str1 echo $str2 echo $str3 echo $str4 echo $str5 #統計字串長度 echo ${#url} #字串擷取 url="www.biancheng://wei.net" #擷取3到7位字串 echo ${url:3:7} #擷取第5位後的字串 echo ${url:5} #休眠5秒(強等待) sleep 5s #擷取':'後的資料 echo ${url#*:}
迴圈
#!/bin/bash #___________while迴圈__________________ read -p "從鍵盤接收資料:" snum read -p "從鍵盤接收資料: " enum #while迴圈 while [[ $snum -le $enum ]];do echo "當前為 $snum" ((snum++)) done echo "執行完成" #死迴圈 while true do echo "Welcome to Yiibai" done #從1疊加到100的總和 i=1 sum=0 while((i <= 100)) do #echo $i sum=$[sum+i] let i++ done echo $sum #__________for迴圈___________________ sum=0 for ((i=1; i<=100; i++)) do #迴圈體 ((sum += i)) done echo "總和為 $sum" #通過in來迴圈 sum=0 for n in 1 2 3 4 5 6 do echo $n ((sum+=n)) done echo "The sum is "$sum #迴圈和判斷 sum=0 for ((i=1; i<=50; i++)) do if (( $i % 2 == 0 ));then echo $i fi ((sum += i)) done echo "總和為 $sum"
其他
#!/bin/bash #判斷執行python程序是否大於1 if [ $(ps -ef|grep -c "python3") -gt 1 ] then echo "true" fi #列出當前執行的程序數量 aa=$(ps -ef|grep -c "tomcat") echo "$aa" #列出tomcat在執行的程序資訊 aa=$(ps -ef|grep "tomcat") echo "$aa" #兩種列印打球路徑的方法 echo $(cd $(dirname $0); pwd) echo $path `pwd`
相關連線: