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 ...
随机推荐
- [RN] React Native 使用 图片预览和放大 插件 react-native-image-zoom-viewer 过程中,放大报错问题
React Native 使用 图片预览和放大 插件 react-native-image-zoom-viewer 过程中,放大报错问题 报错如下: Cannot record touch end w ...
- ASP.NET Core 简介
.NET Core 是 .NET Framework 的新一代版本,是微软开发的第一个具有跨平台 ( Windows.Mac OSX .Linux ) 能力的应用程序开发框 ASP.NET Core ...
- PATA1031 Hello World for U
参考代码: #include <cstdio> #include <cstring> int main() { char str[100], ans[40][40]; scan ...
- 第02组Beta冲刺(2/4)
队名:十一个憨批 组长博客 作业博客 组长黄智 过去两天完成的任务:了解整个游戏的流程 GitHub签入记录 接下来的计划:继续完成游戏 还剩下哪些任务:完成游戏 燃尽图 遇到的困难:没有美术比较好的 ...
- shell equal
#!/bin/shzero=0 status=1 let status=0 if [[ $status -eq $zero ]];then echo "bu >= 3.6"e ...
- java基础 JDBC & Statement & PreparedStatement
参考文章: http://blog.csdn.net/wang379275614/article/details/23393335 概念 JDBC-数据库连接,是由一些类和接口构成的API,是J2SE ...
- 【技术博客】Django中文件下载的实现
开发组在开发过程中,都不可避免地遇到了一些困难或问题,但都最终想出办法克服了.我们认为这样的经验是有必要记录下来的,因此就有了[技术博客]. Django中文件下载的实现 1.背景 在VisualPy ...
- [技术博客]阿里云签名机制字符串的C语言实现
[技术博客]阿里云签名机制字符串的C语言实现 问题描述见:阿里云签名机制 话不多说,上字符串函数转化函数代码 bool AlicloudRequest::sendV2Request() { if( q ...
- Jenkins绑定git
1,新建任务
- 【Netcore】使用 Magic生成器 ,零代码实现CRUD - HTTP REST 之接口
软件介绍: Magic是一个CRUD后端生成器,内置于ASP.NET内核中.它的目的是让你“神奇地”做一些无聊的事情,通过使用自动化技术,创建80%的CRUD端点,自动包装MySQL或MS SQL S ...