Skip to content

if

单分支

shell
if [ condition ];then
  # do something...
fi

shell
if [ condition ]
then
  # do something...
fi

实际使用时,如果不传参数会报错,为了避免这种报错,左右两边用双引号括起来,并加上 x。

shell
if [ "$1"x = "foo"x ]
then
        echo "right"
fi

[] 内出现多个条件时要使用 -a、-o 代替 &&、||

shell
if [ $1 -gt 18 -a $1 -lt 35 ]
then
        echo "right"
fi

多分支

shell
if [ condition ]
then
  # do something...
elif [ condition ]
then
  # do something...
else
  # do something...
fi

case

基本语法

shell
case $变量名 in
值1)
  # do something...
;;
值2)
  # do something...
;;
*)
  # do something...
;;
esac
  • case 行尾必须为 in,每一个模式匹配必须以 ) 结束

  • ;; 表示命令序列结束,相当于其它语言中的 break。

  • *) 表示默认模式,相当于其它语言中的 default。

for

基本语法

sh
for (( i = 0; i < 10; i++ ))
do
  # do something...
done
sh
for (( i = 1; i <= $1; i++ ))
do
  sum=$[ $sum + $i ]
done
echo $sum
sh
for i in Linux Windows MacOS
do
  # do something...
done

$* 和 $@ 的区别

sh
echo '====$*===='
for param in $*
do
        echo $param
done

echo '====$*===='
for param in $@
do
        echo $param
done

====$==== a b c ====$==== a b c

sh
echo '====$*===='
for param in "$*"
do
        echo $param
done

echo '====$*===='
for param in "$@"
do
        echo $param
done

====$==== a b c ====$==== a b c

while

基本语法

sh
while [ condition ]
do
  # do something...
done
sh
i=1
while [ $i -le $1 ]
do
  # sum=$[ $sum + $i ]
  # i=$[ $i + 1 ]

  # 更人性化的写法
  let sum+=i
  let i++
done
echo $sum