一、语法

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

二、练习

  1. 通过端口号判断 ssh 是否正在运行

    status=`netstat -tunap | egrep '\<0.0.0.0:22\>|\<:::22\>'`
    if [ "$status" != "" ]; then
    echo "SSH is running!"
    fi
    user@ae01:~$ sudo sh ./test.sh
    SSH is running!
    user@ae01:~$
  2. 判断 user 的 home 目录是否存在
    if [ -d /home/user ];then
    echo "/home/user is exists."
    else
    echo "/home/user is not exists."
    fi
    user@ae01:~$ sh ./test.sh
    /home/user is exists.
    user@ae01:~$
  3. 判断当前系统日期是不是在国庆假期内
    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!"
    fi
    user@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 练习的更多相关文章

  1. 【转】Shell编程基础篇-下

    [转]Shell编程基础篇-下 1.1 条件表达式 1.1.1 文件判断 常用文件测试操作符 常用文件测试操作符 说明 -d文件,d的全拼为directory 文件存在且为目录则为真,即测试表达式成立 ...

  2. 【转】Shell编程基础篇-上

    [转]Shell编程基础篇-上 1.1 前言 1.1.1 为什么学Shell Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具, Linux/UNIX系统的底层及基础应 ...

  3. shell编程基础(转载)

    Shell编程基础 原作者 Leal:请参阅页面底部的编者列表. 授权许可: 创作共享署名协议 GNU 自由文档许可证 注意:本文仍然在持续的修订之中,且错漏之处可能较多.如果能够阅读英语的话,可以考 ...

  4. 【Shell 编程基础第二部分】Shell里的流程控制、Shell里的函数及脚本调试方法!

    http://blog.csdn.net/xiaominghimi/article/details/7603003 本站文章均为李华明Himi原创,转载务必在明显处注明:转载自[黑米GameDev街区 ...

  5. Linux学习之二十一-shell编程基础

    Shell编程基础 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言.Shell 是指一种应用程序,这个应用程序提供了一个 ...

  6. 7-1 shell编程基础之二

    shell编程基础之二 算数运算 bash中的算术运算:help let +, -, *, /, %取模(取余), **(乘方),乘法符号有些场景中需要转义 实现算术运算: (1) let var=算 ...

  7. 6-2 shell编程基础

    shell编程基础 编程基础 Linus:Talk is cheap, show me the code 程序和编程风格 程序: 程序:算法+数据结构 数据:是程序的核心 算法:处理数据的方式 数据结 ...

  8. shell编程基础进阶

    为什么学习shell编程 shell脚本语言是实现linux/unix 系统管理机自动化运维所必备的重要工具,linux/unix系统的底层及基础应用软件的核心大部分涉及shell脚本的内容.每一个合 ...

  9. 基于Linux系统的Shell编程-基础篇

    1. Shell基础介绍 1.1 Shell编程的意义 为什么使用shell编程 节约时间 1.2 显示脚本执行过程 前面有+表示执行过的命令的 前面没有东西,表示输出到屏幕上的内容. [root@C ...

  10. Shell 编程基础之变量和环境变量

    一.变量赋值和引用 Shell 编程中,使用变量无需事先声明,同时变量的命名不惜遵循如下规则: 首个字符必须为字母(a-z,A-Z)或者_ 变量名中间不能有空格,可以使用_连接 不能使用其他表达符号 ...

随机推荐

  1. Jquery的普通事件和on的委托事件

    以click的事件为例: 普通的绑定事件:$('.btn').click(function(){})绑定 on绑定事件:$(documnet).on('click','btn2',function() ...

  2. 55. Jump Game leetcode

    55. Jump Game Total Accepted: 95819 Total Submissions: 330538 Difficulty: Medium Given an array of n ...

  3. C++联合

    原文地址:http://ideage.javaeye.com/blog/210614 联合(union)在C/C++里面见得并不多,但是在一些对内存要求特别严格的地方,联合又是频繁出现,那么究竟什么是 ...

  4. nginx 配一个简单的静态文件服务器 和一个虚似机

    下面是个图片服务器: server { listen ; server_name img.xxx.xxx.com; root /data/site/img.xxx.xxx.com; access_lo ...

  5. DOM - 5.事件冒泡 + 6.事件中的this

    5.事件冒泡 如果元素A嵌套在元素B中,那么A被点击不仅A的onclick事件会被触发,B的onclick也会被触发.触发的顺序是"由内而外" .验证:在页面上添加一个table. ...

  6. securecrt 用心跳保持连接

    选项->会话->终端->发送协议NO-OP(P)

  7. jcaptcha组件小小改造解决Invalid ID, could not validate une

    https://my.oschina.net/chainlong/blog/192014

  8. execl一个工作薄中有几个个工作表,将这几个个工作表分别保存到不同execl文件中

    用宏运行: Sub QEJebel()    Dim sh As Worksheet    Dim Pa As String    Pa = ThisWorkbook.Path    For Each ...

  9. python实现学生选课系统 面向对象的应用:

    一.要求: 选课系统 管理员: 创建老师:姓名.性别.年龄.资产 创建课程:课程名称.上课时间.课时费.关联老师 使用pickle保存在文件 学生: 学生:用户名.密码.性别.年龄.选课列表[].上课 ...

  10. 排队打饭 sdut 2443【最简单的贪心法应用举例】

    排队打饭 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 题目链接:http://acm.sdut.edu.cn/sdutoj/p ...