Shell 编程基础之 If 练习
一、语法
if [ condition ]; then
# 当 condition 成立时,执行内容;
fi # 将 if 反过来写,fi 结束 if 之意
if [ condition ]; then
# 当 condition 成立时,执行内容;
else
# 当 condition 成立时,执行内容;
fi
if [ condition1 ]; then
# 当 condition1 成立时,执行内容;
elif [ condition2 ]; then
# 当 condition2 成立时,执行内容;
else
# 当 condition1 与 condition2 均不成立时,执行内容;
fi
二、练习
- 通过端口号判断 ssh 是否正在运行
status=`netstat -tunap | egrep '\<0.0.0.0:22\>|\<:::22\>'`
if [ "$status" != "" ]; then
echo "SSH is running!"
fiuser@ae01:~$ sudo sh ./test.sh
SSH is running!
user@ae01:~$ - 判断 user 的 home 目录是否存在
if [ -d /home/user ];then
echo "/home/user is exists."
else
echo "/home/user is not exists."
fiuser@ae01:~$ sh ./test.sh
/home/user is exists.
user@ae01:~$ - 判断当前系统日期是不是在国庆假期内
DATE=`date +%m%d`
if [ $DATE -lt ]; then
echo "National Day holiday hasn't arrived yet."
elif [ $DATE -gt ]; then
echo "National Day holiday is over."
else
echo "Happy Holiday!"
fiuser@ae01:~$ sh ./test.sh
National Day holiday is over.
user@ae01:~$
三、相关判别式详细
| 运算符 | 描述 | 示例 |
| 字符串判断 | ||
| str1 | 当字符串非空时为真 | [ "$str1"] |
| str1 = str2 | 当两个字符串相同时为真 | [ "$str1" = "$str2"] |
| str1 != str2 | 当两个字符串不相等时为真 | [ "$str1" != "$str2"] |
| -n str1 | 当字符串的长度不为0时为真 | [ -n "$str1" ] |
| -z str1 | 当字符串的长度为0时为真 | [ -z "$str1" ] |
| 数字判段 | ||
| int1 -eq int2 | 当两数相等时为真 | [ "$int1" -eq "$int2"] |
| int1 -ne int2 | 当两数不相等时为真 | [ "$int1" -ne "$int2"] |
| int1 -gt int2 | int1 大于 int2 时为真 | [ "$int1" -gt "$int2"] |
| int1 -ge int2 | int1 大于等于 int2 时为真 | [ "$int1" -ge "$int2"] |
| int1 -lt int2 | int1 小于 int2 时为真 | [ "$int1" -lt "$int2"] |
| int1 -le int2 | int1 小于等于 int2 时为真 | [ "$int1" -le "$int2"] |
| 文件判段 | ||
| -e filename | filename 存在则为真 | [ -e "$filename" ] |
| -d filename | filename 为目录则为真 | [ -d "$filename" ] |
| -f filename | filename 为常规文件则为真 | [ -f "$filename" ] |
| -L filename | filename 为链接文件则为真 | [ -L "$filename" ] |
| -c filename | filename 为特殊字符文件则为真 | [ -c "$filename" ] |
| -b filename | filename 为块文件则为真 | [ -b "$filename" ] |
| -s filename | filename 大小不为0时则为真 | [ -s "$filename" ] |
| -r filename | filename 可读则为真 | [ -r "$filename" ] |
| -w filename | filename 可写则为真 | [ -w "$filename" ] |
| -x filename | filename 可执行则为真 | [ -x "$filename" ] |
| filename1 -nt filename2 | filename1 比 filename2新则为真 | [ "$filename1" -nt "$filename2" ] |
| filename2 -ot filename2 | filename1 比 filename2旧则为真 | [ "$filename1" -ot "$filename2" ] |
| 逻辑判断 | ||
| -a | 逻辑与 | [ 3 -gt 1 -a 1 -lt 3 ] |
| -o | 逻辑或 | [ 3 -gt 1 -o 1 -ge 3 ] |
| ! | 非真 | |
Shell 编程基础之 If 练习的更多相关文章
- 【转】Shell编程基础篇-下
[转]Shell编程基础篇-下 1.1 条件表达式 1.1.1 文件判断 常用文件测试操作符 常用文件测试操作符 说明 -d文件,d的全拼为directory 文件存在且为目录则为真,即测试表达式成立 ...
- 【转】Shell编程基础篇-上
[转]Shell编程基础篇-上 1.1 前言 1.1.1 为什么学Shell Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具, Linux/UNIX系统的底层及基础应 ...
- shell编程基础(转载)
Shell编程基础 原作者 Leal:请参阅页面底部的编者列表. 授权许可: 创作共享署名协议 GNU 自由文档许可证 注意:本文仍然在持续的修订之中,且错漏之处可能较多.如果能够阅读英语的话,可以考 ...
- 【Shell 编程基础第二部分】Shell里的流程控制、Shell里的函数及脚本调试方法!
http://blog.csdn.net/xiaominghimi/article/details/7603003 本站文章均为李华明Himi原创,转载务必在明显处注明:转载自[黑米GameDev街区 ...
- Linux学习之二十一-shell编程基础
Shell编程基础 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言.Shell 是指一种应用程序,这个应用程序提供了一个 ...
- 7-1 shell编程基础之二
shell编程基础之二 算数运算 bash中的算术运算:help let +, -, *, /, %取模(取余), **(乘方),乘法符号有些场景中需要转义 实现算术运算: (1) let var=算 ...
- 6-2 shell编程基础
shell编程基础 编程基础 Linus:Talk is cheap, show me the code 程序和编程风格 程序: 程序:算法+数据结构 数据:是程序的核心 算法:处理数据的方式 数据结 ...
- shell编程基础进阶
为什么学习shell编程 shell脚本语言是实现linux/unix 系统管理机自动化运维所必备的重要工具,linux/unix系统的底层及基础应用软件的核心大部分涉及shell脚本的内容.每一个合 ...
- 基于Linux系统的Shell编程-基础篇
1. Shell基础介绍 1.1 Shell编程的意义 为什么使用shell编程 节约时间 1.2 显示脚本执行过程 前面有+表示执行过的命令的 前面没有东西,表示输出到屏幕上的内容. [root@C ...
- Shell 编程基础之变量和环境变量
一.变量赋值和引用 Shell 编程中,使用变量无需事先声明,同时变量的命名不惜遵循如下规则: 首个字符必须为字母(a-z,A-Z)或者_ 变量名中间不能有空格,可以使用_连接 不能使用其他表达符号 ...
随机推荐
- ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(三) 之 实现单聊,群聊,发送图片,文件。
上篇讲解了如何搭建聊天服务器,以及客户端js怎么和layui的语法配合.服务器已经连接上了,那么聊天还会远吗? 进入正题,正如上一篇提到的我们用 Client.Group(groupId)的方法向客户 ...
- 关于KVC、KVO
KVC/KVO --------------------KVC--键值编码-------------------作用:通过字符串来描述对象的属性间接修改对象的属性 Student *stu=[[Stu ...
- iOS - 富文本AttributedString
最近项目中用到了图文混排,所以就研究了一下iOS中的富文本,打算把研究的结果分享一下,也是对自己学习的一个总结. 在iOS中或者Mac OS X中怎样才能将一个字符串绘制到屏幕上呢? ...
- 关于ActionContext.getContext()的用法心得
转: 为了避免与Servlet API耦合在一起,方便Action类做单元测试,Struts 2对HttpServletRequest.HttpSession和ServletContext进行了封装, ...
- drozer unknown module处理办法
将目录切换到drozer安装目录,然后在执行:
- MVC - 20.前台ajax分页
1.用pager方法,输入参数,会返回一个导航条的html字符串.方法的内部比较简单. ajax-pager.js /** * pageSize, 每页显示数 * pageIndex, 当前页数 * ...
- 【mysql中myisam和innodb的区别】
单击进入源网页 要点摘要: 1.查看mysql存储引擎的状态mysql> show engines; 2.查看mysql默认的存储引擎mysql> show variables like ...
- Go 中的反射要点
简介 反射是元数据编程的一种形式,指的是程序获得本身结构的一种能力.不同语言的反射模型实现不一样,本文中的反射,仅仅指的是Go语言中的反射模型. 类型以及接口 这个基本概念需要清晰,这里不详细展开. ...
- 卸载已经安装的rpm包
两个关键点: 1.如果提示有xxx.rpm包已经被installed了,那么先用rpm -e --nodeps xxx来卸载 2.如果存在多个版本的话,用rpm -e --allmatches来卸载 ...
- spfa求最长路
http://poj.org/problem?id=1932 spfa求最长路,判断dist[n] > 0,需要注意的是有正环存在,如果有环存在,那么就要判断这个环上的某一点是否能够到达n点,如 ...