1. 程式人生 > >shell腳本從入門到復雜六(條件判斷和算數運算)

shell腳本從入門到復雜六(條件判斷和算數運算)

shell 條件判斷 算數運算

一、條件判斷

分類:

條件測試類型

數值測試

字符串測試

文件測試


1、條件測試的表達式

格式:

[ expression ]

[[ expression ]]

test expression


2、數值測試

參數說明
-eq等於則為真
-ne不等於則為真
-gt大於則為真
-ge大於等於則為真
-lt小於則為真
-le小於等於則為真

案例1:

判斷當前系統上是否有用戶的默認shell為bash;如果有,就顯示有多少個這類用戶;否則,就顯示沒有這類用戶

# vi determine1.sh

num = `awk -F: '($7=="/bin/bash" {print $0})' /etc/passwd | wc -l`

if [[ $num -gt 0 ]];then

echo "system sum $num user have /bin/bash"

else

echo "system no user have /bin/bash"

fi


註意[[]]裏邊的內容要和中括號之間要有空格


案例2:

給定一個用戶,判斷用戶id和組id是否相同

# vi determine2.sh

#!/bin/bash

read -p "Enter username: " name

userid=`id -u $name`

groupid=`id -g $name`

if [ $userid -eq $groupid ];then

echo "Yes,is some"

else

echo "No,is defferent"

fi


3、字符串測試

參數說明
=等於則為真
!=不相等則為真
-z 字符串字符串的長度為零則為真
-n 字符串字符串的長度不為零則為真


案例:

給定兩個字符串,判斷兩個字符串是否一樣

# determine3.sh

#!/bin/bash

read -p "Enter two string: " str1 str2

if [ $str1 = $str2 ];then

echo "The two string is same"

else

echo "The two string is defferent"

fi


4、文件測試

參數說明
-e 文件名如果文件存在則為真
-r 文件名如果文件存在且可讀則為真
-w 文件名如果文件存在且可寫則為真
-x 文件名如果文件存在且可執行則為真
-s 文件名如果文件存在且至少有一個字符則為真
-d 文件名如果文件存在且為目錄則為真
-f 文件名如果文件存在且為普通文件則為真
-c 文件名如果文件存在且為字符型特殊文件則為真
-b 文件名如果文件存在且為塊特殊文件則為真


案例:

給定一個文件名,判斷文件是否存在

# vi determine4.sh

#!/bin/bash

read -p "Enter filename: " name

if [ -e $name ];then

echo "file is exits"

else

echo "file is not exits"

fi


5、關系符

另外,Shell還提供了與( -a )、或( -o )、非( ! )三個邏輯操作符用於將測試條件連接起來,其優先級為:"!"最高,"-a"次之,"-o"最低。

案例:

判斷參數個數是否大於1且小於3

if [ $# -gt 1 -a $# -le 3 ]


參數個數是否大於1或者小於3

if [ $# -gt 1 ] && [ $# -le 3 ]


二、算數運算

運算符說明舉例
+加法`expr $a + $b` 結果為 30
-減法`expr $a - $b` 結果為 10
*乘法`expr $a \* $b` 結果為 200
/除法`expr $b / $a` 結果為 2
%取余`expr $b % $a` 結果為 0
=賦值a=$b 將把變量 b 的值賦給 a
==相等。用於比較兩個數字,相同則返回 true[ $a == $b ] 返回 false
!=不相等。用於比較兩個數字,不相同則返回 true[ $a != $b ] 返回 true


案例 求和:


賦值有多種方法


num1=5

num2=6


1) let算術表達式


let sum=$num1+$num2


2) $[算術表達式]


sum=$[$num1+$num2]


3) $(())


sum=$(($num1+$num2))


4) expr 算術表達式,表達式中各操作數及運算符之間要有空格,而且要使用命令引用


sum=`expr $num1+$num2`


shell腳本從入門到復雜六(條件判斷和算數運算)