原文和作者一起讨论:http://www.cnblogs.com/intsmaze/p/6675350.html

微信:intsmaze

if 语法格式

if condition
then statements
[elif condition
then statements]
[else
statements ]
fi

示例

vi if.sh

#!/bin/bash
if [ $1 = root ]
then
echo "hello $2 , welcome !"
elif [ $1 = intsmaze ]
then
echo "hello ${2}, welcome !"
else
echo "SB${2}, get out here !"
fi

sh if.sh intsmaze nihao 通过执行脚本时,在脚本命令的后面传入参数。

判断条件

1:条件判断基本语法

[ condition ]  (注意condition前后要有空格)

#非空返回true,可使用$?验证(0为true,1为false)

#空返回false,里面条件为空格也是叫空。

[hadoop@centos-Reall-131 shtest]$ if [ 1 ]; then echo ok ;else echo bad; fi;
ok
[hadoop@centos-Reall-131 shtest]$ if [ 0 ]; then echo ok ;else echo bad; fi;
ok
[hadoop@centos-Reall-131 shtest]$ if [ a ]; then echo ok ;else echo bad; fi;
ok
[hadoop@centos-Reall-131 shtest]$ if [ ]; then echo ok ;else echo bad; fi;
bad
[hadoop@centos-Reall-131 shtest]$ if [ ]; then echo ok ;else echo bad; fi;
bad

注意[  ]内部的=周边的空格,有区别:

[hadoop@centos-Reall-131 shtest]$ if [ a=b ]; then echo ok ;else echo bad; fi;
ok
[hadoop@centos-Reall-131 shtest]$ if [ a = b ]; then echo ok ;else echo bad; fi;
bad

#a=b它识别为一个整体的字符串,所以条件判断为true

短路(理解为三元运算符)

[ condition ] && echo OK || echo notok

条件满足,执行&&后面的语句;条件不满足,执行|| 后面的语句

2:条件判断组合

注:[] 与[[ ]] 的区别:[[ ]] 中逻辑组合可以使用 &&(与) ,||(或) ,而[] 里面逻辑组合可以用 -a(与) ,-o(或)。

[hadoop@centos-Reall-131 shtest]$ if [ a = b && b = c ]; then echo ok;else echo bad;fi
-bash: [: missing `]'
bad
[hadoop@centos-Reall-131 shtest]$ if [ a = b -a b = b ]; then echo ok;else echo bad;fi
bad
[hadoop@centos-Reall-131 shtest]$ if [ a = b -o b = b ]; then echo ok;else echo bad;fi
ok
[hadoop@centos-Reall-131 shtest]$ if [[ a = b && b = b ]]; then echo ok;else echo bad;fi
bad
[hadoop@centos-Reall-131 shtest]$ if [[ a = b || b = b ]]; then echo ok;else echo bad;fi
ok

3:常用判断运算符

字符串比较:= ,!= ,-z 字符串长度是为0返回true,-n 字符串长度是不为0返回true,这里不包括空格的情况。

[hadoop@centos-Reall-131 shtest]$ if [ 'aa' = 'bb' ]; then echo ok; else echo bad;fi #引号可有可无,当然在进行比较时最好使用引号更好表示。
bad
[hadoop@centos-Reall-131 shtest]$ if [ -n "aa" ]; then echo ok; else echo bad;fi
ok
[hadoop@centos-Reall-131 shtest]$ if [ -z "" ]; then echo ok; else echo bad;fi
ok

整数比较:

-lt 小于

-le 小于等于

-eq 等于

-gt 大于

-ge 大于等于

-ne 不等于

文件判断:

-d 是否为目录

-f 是否为文件

-e 是否存在

[hadoop@centos-Reall-131 shtest]$ if [ -d /home/hadoop ]; then echo ok; else echo bad;fi
ok
[hadoop@centos-Reall-131 shtest]$ if [ -f /home/hadoop/ ]; then echo ok; else echo bad;fi
bad
[hadoop@centos-Reall-131 shtest]$ if [ -e /home/hadoop/ ]; then echo ok; else echo bad;fi
ok

路径必须找得到,如果没有找到指定路径的文件,则判断条件就为false。

while语法

i=1
while ((i<=3))
do
echo $i
let i++ #(等价((i++)))
done

case语法

case $1 in
start)
echo "starting"
;;
stop)
echo "stoping"
;;
*)#其他条件都不匹配下,执行该
echo "Usage: {start|stop}"
esac

for语法

1、方式一
N=1
for N in 1 2 3
do
echo $N
done

N=1
for N in 1 2 3; do echo $N; done

N=1
for N in {1..3}; do echo $N; done #(代表1到3之间的数字)
2、方式二
for ((i = 0; i <= 5; i++))
do
echo "welcome $i times"
done

for ((i = 0; i <= 5; i++)); do echo "welcome $i times";done

Linux之shell编程条件判断-if,while,for,case的更多相关文章

  1. Linux学习 -- Shell编程 -- 条件判断

    按照文件类型进行判断 两种格式 test -e /root/install.log [ -e /root/install.log ]   注意空格  适合用于脚本中 echo $?可以看到结果 [ - ...

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

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

  3. Linux - 简明Shell编程04 - 判断语句(If)

    脚本地址 https://github.com/anliven/L-Shell/tree/master/Shell-Basics 示例脚本及注释 #!/bin/bash var=$1 # 将脚本的第一 ...

  4. shell编程 条件判断式----利用 case ..... esac 判断

    条件判断式----利用 case ..... esac 判断 case  $变量名称 in   <==关键词为 case ,还有变量前有钱字号 "第一个变量内容")   &l ...

  5. shell编程 条件判断式----利用 if .... then ----多重

    条件判断式----利用 if .... then ----多重 在同一个数据的判断中,如果该数据需要进行多种不同的判断时,应该怎么作?举例来说,上面的 sh06.sh 脚本中,我们只要进行一次 $yn ...

  6. shell编程-条件判断与流程控制

    1.条件判断式 按照文件类型进行判断: 两种判断格式: test -e /root/install.log [ -e /root/install.log ] 判断命令是否正确执行: [ -d /roo ...

  7. shell 编程 -- 条件判断

    1.按照文件类型进行判断(常用的)-b 判断该文件是否存在-d 判断是否存在,并且是否为目录(是目录就为真)-e 判断该文件是否存在(存在为真)-f 判断文件是否存在,并且是否为普通文件(是普通文件为 ...

  8. Linux shell if条件判断2

    前面介绍linux shell的if判断的语法,现在再补充一点. Linux shell if条件判断1 分支判断结构     if , case   下面两个结构语法,已经在前面有过示例. 结构1: ...

  9. shell中条件判断if中的-z到-d的意思

    shell中条件判断if中的-z到-d的意思 [ -a FILE ] 如果 FILE 存在则为真. [ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真. [ -c FILE ] 如果 ...

随机推荐

  1. STM32的LED驱动程序

    这个LED的小程序基于的是德飞莱的最小系统板 我当时写这个程序的时候想的就是这个程序能够便于理解 也便于移植 便于调用 我参加过电赛 对于STM32的一个管脚修改的麻烦是深有体会 一个地方不对就没法工 ...

  2. 上传图片,多图上传,预览功能,js原生无依赖

    最近很好奇前端的文件上传功能,因为公司要求做一个支持图片预览的图片上传插件,所以自己搜了很多相关的插件,虽然功能很多,但有些地方不能根据公司的想法去修改,而且需要依赖jQuery或Bootstrap库 ...

  3. 面向对象 "一"

    1:面向对象不是所有情况都适用. 2面向对象编程 a:定义类 calss Foo: 注意顶一个类的时候首字母必须是大写 def (方法一)(self,bb) pass b:根据创建对象,创建和Foo实 ...

  4. jquery ajax标准写法

    $.ajax({ url:url,                      //地址 type:'post', //请求方式 还可以是get type不可写成Type 不让会导致数据发送不过去,使用 ...

  5. Spring+CXF的WebServices简单示例

    本文就最简单的WebServices示例来演示Spring和CXF的整合. 使用Maven创建webapp项目,pom如下 <properties> <cxf.version> ...

  6. 腾讯云分布式高可靠消息队列服务CMQ架构

    在分布式大行其道的今天,我们在系统内部.平台之间广泛运用消息中间件进行数据交换及解耦.CMQ是腾讯云内部自研基于的高可靠.强一致.可扩展分布式消息队列,在腾讯内部包括微信手机QQ业务红包.腾讯话费充值 ...

  7. MDX 用Ancestors得到Hierarchy中指定Level的值(附带SCOPE用法之一)

    需求:用户想要用Excel,对比每月预算和整年预算,需要在两个用户定义的Hierarchy都可以浏览.财年季月日(FYQMD)和财年月日(FYMD). 自定义hierarchy 属性关系(Attrib ...

  8. h5标签基础 表单form

    表单:收集用户信息 一. 组成: 文本框<input type="text"/> 密码框<input type="password"/> ...

  9. [HDU1282]回文数猜想

    Problem Description 一 个正整数,如果从左向右读(称之为正序数)和从右向左读(称之为倒序数)是一样的,这样的数就叫回文数.任取一个正整数,如果不是回文数,将该数与他的倒 序数相加, ...

  10. java基础:数组的拼接