本篇主要写一些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 编程 条件语句的更多相关文章

  1. shell编程——if语句【转载】

    (2)shell编程——if语句_macg_新浪博客http://blog.sina.com.cn/s/blog_6151984a0100ekl6.html shell编程——if语句转载 if 语句 ...

  2. 【转载】shell编程——if语句 if -z -n -f -eq -ne -lt

    shell编程中条件表达式的使用 if  条件then Commandelse Commandfi                              别忘了这个结尾 If语句忘了结尾fites ...

  3. Linux就该这么学--Shell脚本条件语句(二)

    1.for条件语句 先读取多个不同的变量值,然后逐一执行同一组命令. 从列表文件中读取主机地址,逐个测试是否在线. 从ipadds.txt中读取主机地址后赋值给HLIST变量后逐个ping列表中的主机 ...

  4. Linux就该这么学--Shell脚本条件语句(一)

    1.条件测试语句能够让Shell脚本根据实际工作灵活调整工作内容,例如判断系统的状态后执行指定的工作,或创建指定数量的用户,批量修改用户密码,这些都可以让Shell脚本通过条件测试语句完成. if条件 ...

  5. SHELL 中条件语句的运用 if for 条件测试语句

    if条件测试语句可以让脚本根据实际情况自动执行相应的命令.从技术角度来讲,if语句分为单分支结构.双分支结构.多分支结构:其复杂度随着灵活度一起逐级上升. if条件语句的单分支结构由if.then.f ...

  6. Shell if条件语句

    1.if条件语句:设定一个条件如果怎么,然后怎么样. (1)-gt大于.-lt小于.-ge大于等于.-le小于等于.-eq等于.-ne不等于. (2)[]内是包括变量时所使用的. (3)-f文件.-n ...

  7. Shell cace条件语句

    cace条件语句,取相对应的多个值,进行输出. 语句:case语句:case $n in 回车\  值)回车\ 命令 :: 值)命令 esac case $1 in start) echo “启动” ...

  8. Linux Shell编程 条件判断语法

    if条件判断语句 单分支 if 条件语句 语法格式: if [条件判断式];then 程序 fi 或者 if [条件判断式] then 程序 fi 在使用单分支 if 条件查询时需要注意几点: if ...

  9. Shell 编程 until语句

    本篇主要写一些shell脚本until语句的使用. 计算1-50的和 #!/bin/bash i=0 s=0 until [ $i -eq 51 ];do let s+=i;let i++ done ...

随机推荐

  1. [RN] React Native 使用 图片预览和放大 插件 react-native-image-zoom-viewer 过程中,放大报错问题

    React Native 使用 图片预览和放大 插件 react-native-image-zoom-viewer 过程中,放大报错问题 报错如下: Cannot record touch end w ...

  2. ASP.NET Core 简介

    .NET Core 是 .NET Framework 的新一代版本,是微软开发的第一个具有跨平台 ( Windows.Mac OSX .Linux ) 能力的应用程序开发框 ASP.NET Core ...

  3. PATA1031 Hello World for U

    参考代码: #include <cstdio> #include <cstring> int main() { char str[100], ans[40][40]; scan ...

  4. 第02组Beta冲刺(2/4)

    队名:十一个憨批 组长博客 作业博客 组长黄智 过去两天完成的任务:了解整个游戏的流程 GitHub签入记录 接下来的计划:继续完成游戏 还剩下哪些任务:完成游戏 燃尽图 遇到的困难:没有美术比较好的 ...

  5. shell equal

    #!/bin/shzero=0 status=1 let status=0 if [[ $status -eq $zero ]];then echo "bu >= 3.6"e ...

  6. java基础 JDBC & Statement & PreparedStatement

    参考文章: http://blog.csdn.net/wang379275614/article/details/23393335 概念 JDBC-数据库连接,是由一些类和接口构成的API,是J2SE ...

  7. 【技术博客】Django中文件下载的实现

    开发组在开发过程中,都不可避免地遇到了一些困难或问题,但都最终想出办法克服了.我们认为这样的经验是有必要记录下来的,因此就有了[技术博客]. Django中文件下载的实现 1.背景 在VisualPy ...

  8. [技术博客]阿里云签名机制字符串的C语言实现

    [技术博客]阿里云签名机制字符串的C语言实现 问题描述见:阿里云签名机制 话不多说,上字符串函数转化函数代码 bool AlicloudRequest::sendV2Request() { if( q ...

  9. Jenkins绑定git

    1,新建任务

  10. 【Netcore】使用 Magic生成器 ,零代码实现CRUD - HTTP REST 之接口

    软件介绍: Magic是一个CRUD后端生成器,内置于ASP.NET内核中.它的目的是让你“神奇地”做一些无聊的事情,通过使用自动化技术,创建80%的CRUD端点,自动包装MySQL或MS SQL S ...