1. 程式人生 > 實用技巧 >shell指令碼基本操作

shell指令碼基本操作

概述:

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"
else
echo "沒有符合的條件" 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`

相關連線:

https://blog.csdn.net/qq_36119192/article/details/82964713

https://www.cnblogs.com/yinheyi/p/6648242.html