(十)shell case, while, until, for, select, break, continue介绍
case in 语句
printf "input number:" read num case $num in 1) echo "one" ;; 2) echo "two" ;; *) echo "error" ;; esac (1) case、in 和 esac 都是 Shell 关键字,num 表示表达式,1表示匹配模式。 num 既可以是一个变量、一个数字、一个字符串,还可以是一个数学计算表达式,或者是命令的执行结 果,只要能够得到 num 的值就可以。 (2) 1可以是一个数字、一个字符串,甚至是一个简单的正则表达式。 (3) 整体和c语言中的switch case相似 *) 相当于default
printf "input a char"
read -n 1 char
case $char in
[0-9])
echo "数字"
;;
[a-z])
echo "小写字母"
;;
*)
echo "error"
;;
esac
while语句
sum=2 while ((sum < 20)) do ((sum += i)) ((i++)) done echo "the sum is:$sum" printf "ctr+d结束,输入数字" while read n do ((sum += n)) done echo "计算结果为:$sum"
until语句
utile: 到了条件才执行,
while: 未到条件才执行,
read num
i=1
until ((i > 3))
do
echo "num=$num i=$i"
((num += i))
((i++))
done
echo "the num is:$num"
for语句
#c语言风格
sum=0
for((i=1; i<=4; i++))
do
echo "i=$i"
done
#shell风格
for n in {1..4}
do
echo "n=$n"
done
#使用shell通配符
for filename in *.sh
do
echo $filename
done
select in 语句
#ctrl+d, break 结束循环 select in 是无限死循环
select num in "china" "english" "bali" "jopan" "break"
do
echo $num
done
printf "选一个你喜欢的品牌"
select like in "ysl" "dior" "amas" "chanel"
do
case $like in
"ysl")
echo "口红"
break
;;
"dior")
echo "香水"
break
;;
*)
echo "重新输入吧"
esac
done
break 和 continue
Shell 中的 break 和 continue 能够跳出多层循环,也就是说,内层循环中的 break 和 continue 能够跳出外层循环。
break num
continue num
for((i=1; i<=5; i++)); do
for((j=1; j<=5; j++)); do
if((i*j==12)); then
continue 2
fi
printf "%d %d" $i $j
break 2
done
done
做一个优秀的程序媛

浙公网安备 33010602011771号