条件判断
条件判断用测试命令来完成,根据命令退出码判断条件是否成立。
常见命令:test和 [ ( [ ]要成对使用)
逻辑真:0 退出码为0
逻辑假:1 退出码为1
常见测试选项:
逻辑判断 | == | != | < | > | <= | >= |
---|---|---|---|---|---|---|
整数测试 | -eq | -ne | -lt | -gt | -le | -ge |
字符串测试 | ==(相等) | !=(不相等) | -z(为空) | -n(不为空) |
---|---|---|---|---|
文件测试 | -d(目录文件) | -f(普通文件) | -b(块设备) | -c(字符设备) |
输入一个整数,判断是否等于10
read x
[ $x -eq 10 ]
echo $? #上一个命令的退出码,为真,返回0
#输入10 输出0
#输入20 输出1
输入字符串hello并判断
read str
[ "X$str" == "Xhello" ]
echo $?
[ "X$str" != "Xhello" ]
echo $?
[ -z $str ]
echo $?
[ -n $str ]
echo $?
#输入 hello
#输出0 1 1 0
多条件测试(用法同C的 ! && || )
逻辑非 !
逻辑于 -a
逻辑或 -o
空语句
:表示一个空语句,退出码为0
也可以用true和false
if语句
read x
if [ $x -eq 10 ];then
echo "x=10"
elif [ $x -eq 20 ];then
echo "x=20"
else
echo "x=$x"
fi
|| 和 &&
read x
# &&相当于if...then...
[ $x -eq 10 ] && echo "x=10"
[ $x -eq 10 ] && {
echo "x=10"
}
# ||相当于if not...then...
[ $x -eq 20 ] || echo "x!=10"
[ $x -eq 20 ] || {
echo "x!=10"
}
#输入10
#输出
# x=10 x=10
# x!=10 x!=10
case语句
read x
case $x in # case $1 in 取第一参数的值
'start' | -s | -S) # start)也可以
echo "start..."
;;
'stop')
echo "stop..."
;;
*)
echo "default..."
;;
esac
类C循环
(( ))中的运算和C一样
for ((i=0; i<=10; i++))
do
echo "$i"
done
#打印0-10
for in 循环
#for x in {1..10}
#for x in {a..z}
#for x in {1..10} {a..z}
for x in {1..3}{4..6}
do
echo $x
done
#输出
#14 15 16 24 25 26 34 35 36
while 循环
x=0
while [ $x -lt 10 ]
do
echo $x
let x++
((x++))
done
#输出 0 2 4 6 8
until 循环
在条件成立之前,一直do…done
x=0
until [ $x -ge 10 ]
do
echo $x
let x++
done
#输出0-10
几种死循环
#for ((;;))
#while :
until false
do
echo "do it"
done
1-10求和
sum=0
str=''
for x in {1..10}
do
[ -n "$str" ] && str+="+$x"
[ -z "$str" ] && str=$x
let sum+=x
let x++
done
echo "$str=$sum"
#输出 1+2+3+4+5+6+7+8+9+10=55