条件选择
在条件选择语句中,主要包含以下几种写法:
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语句的。这点需要牢记。