博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Shell编程 - 流控制
阅读量:7202 次
发布时间:2019-06-29

本文共 1478 字,大约阅读时间需要 4 分钟。

if语句

1 写if语句时不要随意加空格,比如if [ 1<2 ],这是假,而if [ 1 < 2 ]就是真了,因为1和<之间有空格。注意[]与1,2之间的空格是合法的,总结一下就是,Shell中表达式中最好不要加空格,比如a=1, 1<2, 2=2等等,如果加上空格,往往会产生错误。
2 使用test,格式:if test expression
if test 1<2
then echo "no"
else echo "yes"
fi
输出yes
使用[],格式:if [ expression ] (注意:[]与表达式之间有一个空格)
if [ 2<1 ]
then echo "no"
else echo "yes"
fi
输出no
3 使用[]可以进行三种比较,文件测试,字符串比较,数字比较
(1)文件测试,判断sh.exe是否存在
if [ -e sh.exe ] #判断目录是否存在用-d
then echo "sh.exe exists"
else echo "sh.exe does not exists"
fi
(2)字符串比较
-z string 若string长度为0,则为真
-n string 若string长度不为0,则为真
string1=string2 若两字符串相等,则为真
string1!=string2 若两字符串不等,则为真
if [ "abc"="abc" ]
then echo "yes"
else echo "no"
fi
(3)数字比较
[int1 operator int2],这里int1和int2都是整数,如果有一个是字符串,则按0对待,操作符可以是下面这些
-eq 等于
-ne 不等于
-lt 小于
-le 小于等于
-gt 大于
-ge 大于等于
数字比较常用来检测一个命令是否成功执行,在shell中成功执行的命令返回0,而非零整数则表示命令出错,下面是一个例子
if [ $? -ne 0 ] # $?保存一个命令,一个脚本或者一个函数的退出状态
then echo " An error was encountered"
exit
fi
4 compound expressioin 复合表达式
!expr 将expr的bool值取反
expr1 -a expr2 相当于 [ expr1 ] && [ expr2 ]
expr1 -o expr2 相当于 [ expr1 ] || [ expr2 ]
而[expr1] && [expr2] 还有一种等价写法 [[ expr1 && expr2 ]]
下面的两个命令是等价的
if [ -z "$DTHOME" ] && [ -d /usr/dt ] ; then DTHOME=/usr/dt ; fi
if [ -z "$DTHOME" -a -d /usr/dt ] ; then DTHOME=/usr/dt ; fi
5 case语句
case word in
    pattern1)
        list1
        ;;
    pattern2)
        list2
        ;;
esac
或者
case word in
    pattern1) list1 ;;
    pattern2) list2 ;;
esac
case语句的强大之处再于它可以使用模式,比如
case "$TERM" in
    *term)
        TERM=xterm ;;
    network|dialup|unknown|vt[0-9][0-9][0-9])
        TERM=vt100 ;;
esac

====

转载地址:http://hbzum.baihongyu.com/

你可能感兴趣的文章
Combine Two Tables[leetcode]
查看>>
Linux环境变量
查看>>
Python2 进程扫描脚本
查看>>
JQuery EasyUI 日期控件如何控制日期选择区间
查看>>
scrapy ImportError: No module named items
查看>>
jboss7.1.1配置jndi
查看>>
Jsoup解析html
查看>>
JSP+ajax+springMVC+MayBatis处理excel上传导入
查看>>
eclipse maven 配置遇到的问题
查看>>
JSP里request变量列表
查看>>
#python#面向对象练手+模仿Amazon的物流追踪显示
查看>>
器者,道之所载
查看>>
pch头文件出现的问题
查看>>
phpstudy本地环境开启.htaccess伪静态
查看>>
谁能告诉我mybatis中使用#和$的区别?
查看>>
GCD死锁
查看>>
JVM
查看>>
通过创建一个简单的骰子游戏来探究 Python
查看>>
linux 下 C 编程和make的方法 (五:补充 怎么抓BUG)
查看>>
C、C++中关键字static的区别
查看>>