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 编程入门变量运算符条件判断流程控制