Linux之shell编程条件判断-if,while,for,case

 

原文和作者一起讨论: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

 

作者: intsmaze(刘洋)
老铁,你的--->推荐,--->关注,--->评论--->是我继续写作的动力。
微信公众号号:Apache技术研究院
由于博主能力有限,文中可能存在描述不正确,欢迎指正、补充!
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/617621

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。