Shell条件表达式
条件表达式介绍
条件表达式,我们非常的常用,可以说,任何编程语言,都离不开条件表达式,但是每种变成语言的写法都不太一样,在shell中,有一种独特的写法。
条件测试语句
条件测试语句,我们又叫做test语句。
test: 条件测试
[]: 条件测试(语法:中括号两边一定要有空格)例:[ -f /etc/passwd ] 错误写法: [-f /etc/passwd]
[[]]: 支持正则(语法:中括号两边一定要有空格)
文件判断
-f: file 判断普通文件是否存在,如果存在则为真,如果不存在则为假
-d: directroy 判断目录是否存在,如果存在则为真,如果不存在则为假
-e: exists 判断是否存在,如果存在则为真,如果不存在则为假(不分文件还是目录)
-r: read 先判断文件是否存在,如果存在再判断是否有读权限,如果存在并且有读取权限则为真,否则为假(root用户永远有读取权限)
-w: write 先判断文件是否存在,如果存在再判断是否有写权限,如果存在并且有写权限则为真,否则为假(root用户永远有写权限)
-x: exec 先判断文件是否存在,如果存在再判断是否有执行权限,如果存在并且有执行权限则为真,否则为假
-s: size 先判断文件是否存在,如果存在再判断文件大小是否为0,如果是0则为假,如果大于0则为真(空文件为假,非空文件为真)
-L: link 先判断文件是否存在,如果存在再判断文件是否为软连接文件,如果是则为真,否则为假
-nt: newer than 判断文件是否较新,如果是则为真,否则为假
# [ simple_ip_host.sh -nt 01_position.sh ]
-ot: older than 判断文件是否较旧,如果是则为真,否则为假
# [ simple_ip_host.sh -ot 01_position.sh ]
## 做判断
[ -f /etc/zls.txt ] && echo '文件已存在' || echo '文件不存在'
[ -f /etc/passwd ] && {
echo '文件已存在'
} || {
echo '文件不存在'
touch /etc/zls.txt
}
优化计算器
#!/bin/bash
num1=$1
num2=$2
[ $# -ne 2 ] && {
echo '传递两个参数'
exit 1
}
expr $num1 + $num2 &>/dev/null
[ $? -ne 0 ] && {
echo '传递两个数字'
exit 2
}
awk "BEGIN{print $num1+$num2}"
awk "BEGIN{print $num1-