shell脚本从入门到复杂六(条件判断和算数运算)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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脚本从入门到复杂六(条件判断和算数运算)的主要内容,如果未能解决你的问题,请参考以下文章

Linux实操篇—— Shell 编程入门变量运算符条件判断流程控制

Linux实操篇—— Shell 编程入门变量运算符条件判断流程控制

Shell脚本编程概述:算数运算和条件测试

bash腳本編程之三 条件判断及算数运算

第五课-第四讲05_04_bash脚本编程之三 条件判断及算术运算

Shell教程三----运算符,条件判断