shell脚本的逻辑运算与算术运算-Linux(11)
程序员文章站
2022-07-12 12:30:16
...
逻辑运算
shell脚本编程中提供了条件结构,根据条件的不同而进行不同的操作。
条件测试
两种方式:
- test 条件表达式
- [ 条件表达式 ] 必须在[]前后加空格,否则报错。
测试一下:
输出结果为:
可测试的条件类型
字符串
比较方式 | 结果 |
---|---|
string1 = string2 | 相同则为真 |
string1 != string2 | 不同则为真 |
-n string | 字符串不为空则为真 |
-z string | 为空则为真 |
要注意的是 =
两边必须要有空格
算术比较
比较方式 | 结果 |
---|---|
expression1 -eq expression2 | 相等则为真 |
expression1 -ne expression2 | 不等则为真 |
expression1 -gt expression2 | expression1大于expression2则为真 |
expression1 -ge expression2 | expression1大于或者等于expression2为真 |
expression1 -lt expression2 | expression1小于expression2为真 |
expression1 -le expression2 | expression1小于或者等于expression2为真 |
文件条件测试
比较方式 | 结果 |
---|---|
-d file | 文件是目录则为真 |
-e file | 文件存在则为真 |
-f file | 普通文件则为真 |
-r file | 文件可读则为真 |
-s file | 文件长度不为0则为真 |
-w file | 文件可写则为真 |
-x file | 文件可执行则为真 |
逻辑运算
and运算
运算符为&&
statement1 && statement2 && statement3
顺序执行语句,第一条为真才会判断下一个。
测试代码:
#! /bin/bash
if [ 1 -gt 0 ] && echo 第二条命令 && [ 0 -gt 1 ]
then
echo yes
else
echo no
fi
结果:
or运算
statement1 || statement2 || statement3
顺序执行,直到找到一条命令为真,则停止执行以后命令。
算术运算
expr命令
格式:
expr expression
- 运算符号前后要有空格,并且乘法要转义,即
"\*"
。 - 启用新的shell执行expr命令
$((expression))
$((expression))
let命令
格式:
let expression
- 变量前可以省略$
上述三种的测试代码:
#! /bin/bash
a=1
b=2
echo `expr $a \* $b`
echo $(($a*$b))
let c=a*b
echo $c
结果: