17.shell脚本编程(2)

    接着上一篇内容继续,当然shell也可以像其他语言是可以结构化编程的。

    if-then使用

xin@xin ~/Test $ cat a.sh
#!/bin/bash
if date ; then
	echo "成功执行!"
fi
xin@xin ~/Test $ bash a.sh 
2016年 01月 07日 星期四 15:27:25 CST
成功执行!
    if-then-else
xin@xin ~/Test $ cat b.sh
#!/bin/bash
if date ; then
	echo "执行成功!"
else
	echo "执行失败!"
fi
xin@xin ~/Test $ bash b.sh 
2016年 01月 07日 星期四 15:30:00 CST
执行成功!
xin@xin ~/Test $ vim b.sh 
xin@xin ~/Test $ cat b.sh 
#!/bin/bash
if data ; then
	echo "执行成功!"
else
	echo "执行失败!"
fi
xin@xin ~/Test $ bash b.sh 
b.sh: 行 2: data: 未找到命令
执行失败!
    test命令使用。这里指的是[]的使用。条件成立的时候,test命令就会退出冰返回状态码0。

    if test condition ; then

        commands

    fi

    改写成

    if [ condition ] ; then

        commands

    fi

    这里要先说明比较符号的使用

    n1 -eq n2        检查n1是否和n2相等

    n1 -ge n2        检查n1是否大于或等于n2

    n1 -gt n2        检查n1是否大于n2

    n1 -le n2        检查n1是否小于或等于n2

    n1 -lt n2        检查n1是否小于n2

    n1 -ne n2        检查n1是否不等于n2

xin@xin ~/Test $ cat a.sh
#!/bin/bash
var1=10
var2=11

if [ $var1 -gt 5  ] ; then
	echo "$var1大于5"
fi
xin@xin ~/Test $ bash a.sh
10大于5

    字符串比较

    str1 = str2       检查str1是否和str2相同

    str1 != str2      检查str1是否和str2不同

    str1 < str2       检查str1是比str2小

    str1 > str2       检查str1是比str2大

    -n str1           str1的长度是否非0

    -z str1           检查str1的长度是否为0

xin@xin ~/Test $ cat b.sh 
#!/bin/bash
name=xin
if [ $USER = $name ] ; then
	echo "当前用户和$name相同"
fi
xin@xin ~/Test $ bash b.sh
当前用户和xin相同

    test命令中大写字母会被当成小于小写字母。sort命令排序时,小写字母会先出现。

    对文件状况的判断

    -d file            检查file是否存在并是一个目录

    -e file            检查file是否存在

    -f file            检查file是否存在

    -r file            检查file是否存在并可读

    -s file            检查file是否存在并非空

    -w file            检查file是否存在并可写

    -x file            检查file是否存在并可执行

    -0 file            检查文件是当前用户所有

    -G file            检查file是否存在并且默认组与当前用户相同

    file1 -nt file2    检查file1是否比file2新

    file1 -ot file2    检查file1是否比file2旧

xin@xin ~/Test $ cat c.sh 
#!/bin/bash
if [ -d /home/$USER  ] ; then
	echo "$USER用户家目录存在";
fi
xin@xin ~/Test $ bash c.sh 
xin用户家目录存在

    复合条件测试

    [ condition1 ] && [ condition2 ]

    [ condition1 ] || [ condition2 ]

    双圆号的使用

    用于在表达式中进行高级数学运算

xin@xin ~/Test $ cat d.sh
#!/bin/bash
var1=3
if (( $var1 ** 2 < 90 )) ; then
	echo "$var1的平方小于90"
fi
xin@xin ~/Test $ bash d.sh
3的平方小于90
    使用双方括号

    他提供了模式匹配

xin@xin ~/Test $ cat e.sh 
#!/bin/bash
if [[ $USER == x*  ]] ; then
	echo "你好$USER"
else
	echo "无法识别的用户"
fi
xin@xin ~/Test $ bash e.sh
你好xin
    case 语句

xin@xin ~/Test $ cat f.sh 
#!/bin/bash
case $USER in
xin)
	echo "你好xin";;
bing)
	echo "你好bing";;
*)
	echo "无法识别的用户";;
esac
xin@xin ~/Test $ bash f.sh
你好xin
          

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值