shell语法(循环判断)

条件判断
  条件判断用测试命令来完成,根据命令退出码判断条件是否成立。
  常见命令: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

你可能感兴趣的:(shell)