shell编程学习基础第三篇

条件选择

在条件选择语句中,主要包含以下几种写法:

if command
then
  commands
fi

注意
1 、if 后面是判断语句,不能使用其他语言一样的 false 或者 true。
2、then 要换行,不能写成 if command then 的格式,但是可以写成 if command ; then 的格式

if command ; then
	commands
if

如果我要判断处理异常退出(状态码非0)情况,该怎么办呢?,使用else分支。

if command
then
	commands
else
	commands
fi
#!/bin/bash
a=1
b=1
if [ $a != $b ]
then
 	echo 'a 不等于 b'
elif [ $a == $b ]
then
	echo 'a 等于 b'
fi

#输出 a 等于 b
#!/bin/bash
a=1
b=2
if [ $a != $b ] ; then
 	echo 'a 不等于 b'
elif [ $a == $b ] ; then
	echo 'a 等于 b'
fi

#输出 a 不等于 b

test命令
test命令用于if-then或者if-then-else语句中,主要用于判断列出的条件是否成立,如果成立,就会退出并返回退出状态码0,否则返回非0。

test命令只能判断一下三类条件:
1、数值比较
2、字符串比较
3、文件比较

先看看test命令的基本用法吧:

test condition

结合if-then语句用

if test condition
then
	commands
fi

结合if-then-elif-then-else语句用

if test condition
then
	command
elif test condition
then
	command
else
	command
fi
#!/bin/bash
a=1
b=1
if test [ $a != $b ] 
then
 	echo 'a 不等于 b'
elif test [ $a == $b ] 
then
	echo 'a 等于 b'
fi
#输出
#script.sh: line 4: test: too many arguments
#script.sh: line 7: test: too many arguments
#上面是错误的,正确的写法应该是:

#!/bin/bash
a=1
b=1
if test $a != $b 
then
 	echo 'a 不等于 b'
elif test $a == $b 
then
	echo 'a 等于 b'
fi
#输出 a 等于 b
#也就是说,使用了 test后,不能再使用 [] 符号了。

还有一种方法,那就是使用 (()) 双括号。

使用双括号

双括号命令允许你在比较过程中使用高级数学表达式。关键是使用双括号,咱就可以用数学比较符号啦(等于==, 大于>, 小于< 等等都能使用啦)。
使用方法:
注意:括号里面两边都需要有空格

(( command ))
#!/bin/bash
a=1
b=2
if (( $a != $b )) 
then
 	echo 'a 不等于 b'
elif (( $a == $b )) 
then
	echo 'a 等于 b'
fi

case 语句

case $num in
1)
	echo 'num等于1'	;;
2) 
	ehco "num等于2"	;;
3)
	echo "num等于3"	;;
$str)
	echo "num等于$str"	;;
*)
	echo "defaul"	;;
esac

#!/bin/bash
a=10
b=2
num=10
case $num in
1)
	echo "num等于$num" ;;
2) 
	echo "num等于$num" ;;
3)
	echo "num等于$num" ;;
$a)
	echo "num等于$num" ;;
*)
	echo "defaul num等于$num" ;;
esac

小结

本篇主要讲了条件语句。shell中的条件语句与其他编程语言相比有不小的区别,最大的区别就在于条件语句后接的是命令,而不是布尔值, 是根据命令执行退出的状态码来决定是否进入then语句的。这点需要牢记。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值