shell if 命令
1. if-then 语句
最基本的结构化命令就是
if-then
语句。if-then
语句有如下格式。bash shell的 if 语句会运行 if 后面的那个命令。如果该命令的退出状态码是 0即该命令运行成功,位于 then 部分的命令就会被执行。如果该命令的退出状态码是其他值, then部分的命令就不会被执行。fi
语句用来表示 if-then语句到此结束。
if command
thencommands
fi语句形式还可以写成这样
if command; thencommands
fi
2. if-then-else 语句
在
if-then
语句中,不管命令是否成功执行,你都只有一种选择。如果命令返回一个非零退出状态码,bash shell会继续执行脚本中的下一条命令。在这种情况下,如果能够执行另一组命令就更好了。这正是 if-then-else 语句的作用。
if command
thencommands
elsecommands
fi
3. 嵌套 if 语句
嵌套 if 语句并不是新的语句格式,只不过在 if 语句内部中再次,或多次使用 if 语句。
if command1
thencommands
elseif command2thencommandsfi
fi
4. 多分支 if-elif 语句
if-else
最多只能应对两种情况,但是很多时候你需要应对更多的情形,所以在 shell 编程中可以使用if-elif
和if-elif-else
语句。
if command1
thencommands
elif command2
thenothers commands
fi
5. test 命令
在
if
语句中看到的都是普通 shell 命令。if-then
语句不能测试命令退出状态码之外的条件。所以在 bash shell 中提供了test
命令帮你通过if-then
语句测试其他条件。test 命令可以判断三类条件:
- 数值比较
- 字符串比较
- 文件比较
test 命令的格式如下:
test
condition
test 命令配合 if
格式如下:
if test condition
thencommands
fi
5.1 数值比较
使用
test
命令最常见的情形是对两个数值进行比较。表12-1列出了测试两个值时可用的条件
参数。
test 命令的数值比较功能
----------+-----------------------------比 较 | 描 述
----------+-----------------------------
n1 -eq n2 | 检查 n1 是否与 n2 相等
n1 -ge n2 | 检查 n1 是否大于或等于 n2
n1 -gt n2 | 检查 n1 是否大于 n2
n1 -le n2 | 检查 n1 是否小于或等于 n2
n1 -lt n2 | 检查 n1 是否小于 n2
n1 -ne n2 | 检查 n1 是否不等于 n2
------------------+---------------------
例如,大于:
a=6if [ $a -gt 5 ]
thenecho "a>5"
fi
例如,等于:
a=5if [ $a -eq 5 ]
thenecho "a=5"
elseecho "a!=5"
fi
例如,小于:
a=3if [ $a -lt 5 ]
thenecho "a<5"
fi
5.2 字符串比较
字符串比较测试命令
-------------+----------------------------比 较 | 描 述
-------------+----------------------------
str1 = str2 | 检查 str1 是否和 str2 相同
str1 != str2 | 检查 str1 是否和 str2 不同
str1 < str2 | 检查 str1 是否比 str2 小
str1 > str2 | 检查 str1 是否比 str2 大
-n str1 | 检查 str1 的长度是否非 0
-z str1 | 检查 str1 的长度是否为 0
-------------+----------------------------
例如,判断字符串是否为空:
a=helloif [ -n $a ]
thenecho "'$a' is not empty"
elseecho "'$a' is empty"
fi
5.3 文件比较
test 命令的文件比较功能
----------------+--------------------------------------------
比 较 | 描 述
----------------+--------------------------------------------
-d file | 检查 file 是否存在并是一个目录
-e file | 检查 file 是否存在
-f file | 检查 file 是否存在并是一个文件
-r file | 检查 file 是否存在并可读
-s file | 检查 file 是否存在并非空
-w file | 检查 file 是否存在并可写
-x file | 检查 file 是否存在并可执行
-O file | 检查 file 是否存在并属当前用户所有
-G file | 检查 file 是否存在并且默认组与当前用户相同
file1 -nt file2 | 检查 file1 是否比 file2 新
file1 -ot file2 | 检查 file1 是否比 file2 旧
----------------+--------------------------------------------
例如,检查目录:
dir=/home/zhbiif [ -d $dir ]
thenecho "$dir exists"
elseecho "$dir does not exist"
fi
6. if-then 高级特性
bash shell 提供了两项可在
if-then
语句中使用的高级特性:
- 用于数学表达式的双括号
(( expression ))
- 用于高级字符串处理功能的双方括号
[[ expression ]]
6.1. 双方括号用法
双括号命令符号:
双括号命令符号
--------+---------符 号 | 描 述
--------+---------val++ | 后增val-- | 后减++val | 先增--val | 先减! | 逻辑求反~ | 位求反** | 幂运算<< | 左位移>> | 右位移& | 位布尔和| | 位布尔或&& | 逻辑和|| | 逻辑或
--------+---------
双括号命令使用:
a=10if (( $a ** 2 > 90 ))
then(( b = $a ** 2 ))echo "The square of $a is $b"
fi
6.2 使用双方括号
注意,不是所有的shell都支持双方括号。在下面的脚本中,我们使用了双等号( == )。双等号将右边的字符串( r* )视为一个模式,并应用模式匹配规则。双方括号命令 $usr环境变量进行匹配,看它是否以字母 r 开头。如果是的话,比较通过,shell会执行 then 部分的命令。
if [[ $usr == r* ]]
thenecho "Hello $user"
elseecho "Sorry, I do not know you"
fi
7. case 命令
s="word"case $s in"hello") echo This is hello;;"word") echo This is word;;"A" | "B") echo good;;
esac
shell if 命令相关推荐
- 2021年大数据Kafka(三):❤️Kafka的集群搭建以及shell启动命令脚本编写❤️
全网最详细的大数据Kafka文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 Kafka的集群搭建以及shell启动命令脚本编写 一.搭建 ...
- linux中的shell有printf吗,Linux Shell系列教程之(八)Shell printf命令详解
在上一篇:Linux Shell系列教程之(七)Shell输出这篇文章中,已经对Shell printf命令有了一个简略的介绍,本篇给大家详细介绍下Shell中的printf命令. 一.Shell p ...
- Shell test命令(Shell [])详解,附带所有选项及说明
test 是 Shell 内置命令,用来检测某个条件是否成立.test 通常和 if 语句一起使用,并且大部分 if 语句都依赖 test. test 命令有很多选项,可以进行数值.字符串和文件三个方 ...
- Shell+Linux命令实现日志分析
这篇文章主要介绍了Shell+Linux命令实现日志分析,本文给出了结合grep命令.awk命令等实现了几个常用的日志分析统计长命令,需要的朋友可以参考下 一.列出当天访问次数最多的IP 命令: 复制 ...
- 【Linux】1.shell各个命令
shell各个命令 1.符号参数 $# 传递到脚本的参数个数 $* 以一个单字符串显示所有向脚本传递的参数.如"$*"用「"」括起来的情况.以"$1 $2 - ...
- shell 常用命令
shell 常用命令 Shell基本命令 几个基本的shell命令,用ssh管理主机必备. 1.ls 列出目录下的文件,不同类型的文件颜色不同,例如蓝色是文件夹,白色是文件 [root@restor ...
- linux中Shell历史命令记录文件的路径是什么
Bash shell在"~/.bash_history"("~/"表示用户目录)文件中保存了500条使用过的命令,这样能使你输入使用过的长命令变得容易.每个在系 ...
- UEFI Shell 常用命令
UEFI Shell 常用命令 分类:IT技术 2013-09-11 16:49阅读(14542)评论(0) EFI是Extensible Firmware Interface的缩写,是介于平台固件和 ...
- expr命令 linux,Shell expr命令进行整数计算的实现
expr 是 evaluate expressions 的缩写,译为"表达式求值".Shell expr 是一个功能强大,并且比较复杂的命令,它除了可以实现整数计算,还可以结合一些 ...
- linux中的变量文件路径,Linux库文件和Shell可执行程序命令文件搜索路径变量的设置...
一.库文件的搜索路径: 1.在配置文件/etc/ld.so.conf中指定动态库搜索路径(需要添加其它库文件的路径,在文件的最后添加具体的路径即可 [ 如:/usr/local/lib ],添加后保存 ...
最新文章
- PHP的一种缓存方案静态化
- Windows的端口列表(转载)
- 快乐数(最终要变成1)
- CentOs7中安装sonarQube服务系列------3.安装SonarQube服务器
- 离散数学实验题目-图
- Nashorn如何在新层面上影响API的发展
- 文本或代码中 \n 和 \r 的区别
- LwIP应用开发笔记之二:LwIP无操作系统UDP服务器
- media jquery 适配ios不同手机
- C语言程序设计第四次作业
- Linux防火墙iptables配置详解
- JS 三级联动之 省市县。
- python统计大写辅音字母_大写
- xss.haozi.me通关记录
- git Untracked files
- 编码器SRT协议三种模式(listener, caller, rendezvous)简介
- Windows 10 微软官方下载工具
- 用m ip衡量的计算机性能指标是,ip网络技术要求网络性能参数与指标.pdf.pdf
- 树莓派 linux hook,树莓派制造日视/夜视串流直播摄像头
- IP地址划分, 常见的CIDR划分,子网掩码对应表及在线CIDR工具