bash脚本条件判断

2018-10-28  本文已影响0人  liyin_d64b
1.bash中实现条件判断

条件测试类型包括:
整数测试
字符测试
文件测试

条件测试的表达式
[ expression ] (要加空格)
[[ expression ]] 
test expression 
整数比较:

-eq:测试两个整数是否相等

$ A=3
$ B=6
$ [ $A -eq $B ]
$ [ $A -eq $B ]
$ echo $?
1 #1为假,0为真

$ B=3
$ [ $A -eq $B ]
$ echo $?
0

-ne:测试两个整数是否不等,不等为0,等为1
-gt(greater than):一个大于另一个
-lt(lesser than): 一个小于另一个
-ge: 大于或等于
-le:小于或等于

逻辑关系:

and: && 第一个条件为假时,后面都不执行了,称为短路。 若第一个为真,后面必须判断
or: || 第一个条件为真时,后面就不执行了 若第一个为假,后面则必须判断

若用户存在则hello world
$ id jmzeng &> /dev/null && echo "Hello world"
Hello world
$ id user1 &> /dev/null && echo "Hello"
若用户不存在则添加用户  
$ ! id user7 && useradd user7
id: ‘user7’: no such user
useradd: Permission denied.
useradd: cannot lock /etc/passwd; try again later.
用或命令(前面为真后面则不执行)
$ id user7 || useradd user7
id: ‘user7’: no such user
useradd: Permission denied.
useradd: cannot lock /etc/passwd; try again later.
脚本判断
#!/bin/bash
lines=`wc -l /etc/passwd` #命令结果保存在lines,` `反引号为引用结果

finallines=`echo $lines | cut -d' ' -f1`
echo "it has $finallines lines" 

[ $finallines -gt 100 ] && echo "is a big data" || echo "is a small data"
$ ./test.sh 
it has 85 lines
is a small data
练习题

如果用户不存在,添加并保存密码,否则显示存在

$ ! id user1 && useradd user1 && echo "user1" | passwd --stdin user1  || echo "user1 exists"
id: ‘user1’: no such user
useradd: Permission denied.
useradd: cannot lock /etc/passwd; try again later.

$ ! id user1 &> /dev/null  && useradd user1 && echo "user1" | passwd --stdin user1  || echo "user1 exists"
useradd: Permission denied.
useradd: cannot lock /etc/passwd; try again later.
# &> /dev/null 不要这些信息
友情阅读推荐:

生信技能树公益视频合辑:学习顺序是linux,r,软件安装,geo,小技巧,ngs组学!

B站链接:https://m.bilibili.com/space/338686099

YouTube链接:https://m.youtube.com/channel/UC67sImqK7V8tSWHMG8azIVA/playlists

生信工程师入门最佳指南:https://mp.weixin.qq.com/s/vaX4ttaLIa19MefD86WfUA

学徒培养:https://mp.weixin.qq.com/s/3jw3_PgZXYd7FomxEMxFmw

上一篇下一篇

猜你喜欢

热点阅读