Shell 编程 条件语句

本篇主要写一些shell脚本条件语句的使用。
条件测试
test 条件表达式
[ 条件表达式 ]
文件测试
-d:测试是否为目录(Directory)。
-e:测试文件或目录是否存在(Exist)。
-f:测试是否为文件(File)。
-r:测试当前用户是否有权限读取(Read)。
-w:测试当前用户是否有权限写入(Write)。
-x:测试是否设置有可执行权限(Excute)。
-nt:判断文件A是否比文件B新。
-ot:判断文件A是否比文件B旧。
-ef:判断两个文件是否为同一个文件,用来判断两个文件是否指向同一个inode。
[root@localhost ~]# test -d /etc/ && echo $?
0
[root@localhost ~]# ls test.txt
ls: cannot access test.txt: No such file or directory
[root@localhost ~]# [ ! -e test.txt ] && touch test.txt
[root@localhost ~]# ls test.txt
test.txt
整数值比较
- [ 整数1 操作符 整数2 ]
-eq:等于(Equal)
-ne:不等于(Not Equal)
-gt:大于(Greater Than)
-lt:小于(Lesser Than)
-le:小于等于(Lesser or Equal)
-ge:大于等于(Greater or Equal)
[root@localhost ~]# history | wc -l
294
[root@localhost ~]# [ `history | wc -l` -gt 100 ] && echo "Too many" || echo "Too few"
Too many
[root@localhost ~]# history -c
[root@localhost ~]# [ `history | wc -l` -gt 100 ] && echo "Too many" || echo "Too few"
Too few
字符串比较
=:第一个字符串与第二个字符串相同
!=:第一个字符串与第二个字符串不相同
-z:检查字符串是否为空,对于未定义或赋予空值的变量视为空串
逻辑测试
&&:逻辑与,表示而且,使用test命令测试时,可改为-a。
||:逻辑或,表示或者使用test命令测试时,可改为-o。
!:逻辑否,表示不
if 单分支
[root@localhost ~]# vim score.sh
#!/bin/bash
read -p "请输入成绩:" score
if [ $score -ge 60 ]
then
echo "成绩合格"
fi
[root@localhost ~]# chmod +x score.sh
[root@localhost ~]# ./score.sh
请输入成绩:80
成绩合格
[root@localhost ~]# ./score.sh
请输入成绩:40
if 双分支
[root@localhost ~]# vim score.sh
#!/bin/bash
read -p "请输入成绩:" score
if [ $score -ge 60 ]
then
echo "成绩合格"
else
echo "成绩不合格"
fi
[root@localhost ~]# ./score.sh
请输入成绩:80
成绩合格
[root@localhost ~]# ./score.sh
请输入成绩:40
成绩不合格
if 多分支
[root@localhost ~]# vim score.sh
#!/bin/bash
read -p "请输入成绩:" score
if [ $score -ge 90 ]
then
echo "成绩优秀"
elif [ $score -ge 60 ]
then
echo "成绩合格"
else
echo "成绩不合格"
fi
[root@localhost ~]# ./score.sh
请输入成绩:90
成绩优秀
[root@localhost ~]# ./score.sh
请输入成绩:80
成绩合格
[root@localhost ~]# ./score.sh
请输入成绩:40
成绩不合格
[root@localhost ~]# vim run.sh
if 嵌套
#!/bin/bash
read -p "请输入时间:" time
if [ $time -le 10 ]
then
echo "您已进入决赛"
read -p "请输入性别(man/woman)" sex
if [ $sex = "man" ]
then
echo "您被分到男子组"
else
echo "您被分到女子组"
fi
else
echo "抱歉,您被淘汰"
fi
[root@localhost ~]# chmod +x run.sh
[root@localhost ~]# ./run.sh
请输入时间:9
您已进入决赛
请输入性别(man/woman)man
您被分到男子组
[root@localhost ~]# ./run.sh
请输入时间:9
您已进入决赛
请输入性别(man/woman)woman
您被分到女子组
[root@localhost ~]# ./run.sh
请输入时间:11
抱歉,您被淘汰
Shell 编程 条件语句的更多相关文章
- shell编程——if语句【转载】
(2)shell编程——if语句_macg_新浪博客http://blog.sina.com.cn/s/blog_6151984a0100ekl6.html shell编程——if语句转载 if 语句 ...
- 【转载】shell编程——if语句 if -z -n -f -eq -ne -lt
shell编程中条件表达式的使用 if 条件then Commandelse Commandfi 别忘了这个结尾 If语句忘了结尾fites ...
- Linux就该这么学--Shell脚本条件语句(二)
1.for条件语句 先读取多个不同的变量值,然后逐一执行同一组命令. 从列表文件中读取主机地址,逐个测试是否在线. 从ipadds.txt中读取主机地址后赋值给HLIST变量后逐个ping列表中的主机 ...
- Linux就该这么学--Shell脚本条件语句(一)
1.条件测试语句能够让Shell脚本根据实际工作灵活调整工作内容,例如判断系统的状态后执行指定的工作,或创建指定数量的用户,批量修改用户密码,这些都可以让Shell脚本通过条件测试语句完成. if条件 ...
- SHELL 中条件语句的运用 if for 条件测试语句
if条件测试语句可以让脚本根据实际情况自动执行相应的命令.从技术角度来讲,if语句分为单分支结构.双分支结构.多分支结构:其复杂度随着灵活度一起逐级上升. if条件语句的单分支结构由if.then.f ...
- Shell if条件语句
1.if条件语句:设定一个条件如果怎么,然后怎么样. (1)-gt大于.-lt小于.-ge大于等于.-le小于等于.-eq等于.-ne不等于. (2)[]内是包括变量时所使用的. (3)-f文件.-n ...
- Shell cace条件语句
cace条件语句,取相对应的多个值,进行输出. 语句:case语句:case $n in 回车\ 值)回车\ 命令 :: 值)命令 esac case $1 in start) echo “启动” ...
- Linux Shell编程 条件判断语法
if条件判断语句 单分支 if 条件语句 语法格式: if [条件判断式];then 程序 fi 或者 if [条件判断式] then 程序 fi 在使用单分支 if 条件查询时需要注意几点: if ...
- Shell 编程 until语句
本篇主要写一些shell脚本until语句的使用. 计算1-50的和 #!/bin/bash i=0 s=0 until [ $i -eq 51 ];do let s+=i;let i++ done ...
随机推荐
- p1842 奶牛玩杂技 题解
感觉其他dalao讲的不是很明白啊,我这样的蒟蒻看不懂啊. 在luogu这个dalao遍地的地方我蒟蒻看个题解也不明白,我为跟我同病相怜的蒟蒻写一篇吧 其实真是不太明白,大部分题解都是只说 体重大的在 ...
- Java 并发系列之十:java 并发框架(2个)
1. Fork/Join框架 2. Executor框架 3. ThreadPoolExecutor 4. ScheduledThreadPoolExecutor 5. FutureTask 6. t ...
- [C#]AdvPropertyGrid的使用示例(第三方控件:DevComponents.DotNetBar2.dll)
开发环境:Visual Studio 2019 .NET版本:4.5.2 效果如下: 1.初始化界面: 2.属性“人物”-自定义控件显示: 3.属性“地址”-自定义窗体显示: 4.属性“性别”-枚举显 ...
- VS C++代码能正确编译 但还是显示红色波浪线 提示"无法打开源文件"
症状细节 我发现很多第三方库的环境部署教程,都会教读者配置 属性VC++目录 -> 包含目录 比如OpenCV的环境配置教程. 这样配置之后能通过编译: 但是,在IDE里,会有一些烦人的红波浪线 ...
- docker for mac的JSON配置文件中的hosts项修改后无法生效
docker for mac的JSON配置文件中的hosts项修改后无法生效 docker 2.1k 次浏览 问题对人有帮助,内容完整,我也想知道答案0问题没有实际价值,缺少关键内容,没有改进余地 增 ...
- Jumpserver 5.2版本安装与部署
组件说明 Jumpserver 为管理后台, 管理员可以通过 Web 页面进行资产管理.用户管理.资产授权等操作, 用户可以通过 Web 页面进行资产登录, 文件管理等操作 koko 为 SSH Se ...
- jquery.i18n.properties前端国际化方案
如果新项目要做系统国际化, 时下热门的任何一种技术选型都有成熟的方案,比如: vue + vue-i18n angular + angular-translate react + react-intl ...
- element-ui时间选择器--设置禁止选择的时间
场景需求:开始日期不能小于今天,在今天之前的日期禁止选择,结束日期不能小于开始日期,开始日期之前的日期禁止选择. 效果图: element-ui的时间选择器中,有一个picker-options的属性 ...
- 使用Oracle Logminer同步Demo
使用Oracle Logminer同步Demo 1 Demo介绍 1.1 Demo设想 前面介绍了Oracle LogMiner配置使用以及使用LogMiner进行解析日志文件性能,在这篇文章中将利用 ...
- 贪心 --- Y2K Accounting Bug
Y2K Accounting Bug Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9691 Accepted: 483 ...