select
select循环主要用于创建菜单,按数字顺序排列的菜单项将显示在标准错误上,并显示PS3提示符,等待用户的输入,用户输入菜单列表中的某个数字,执行相应的命令,用户输入被保存在变量REPLY中。
select是个无限循环,因此要记住用break命令退出循环,或者用exit直接退出脚本,也可以使用ctrl+c退出循环
select语句结构:
select 变量 in 选项1 选项2 ;do
break
done
#!/bin/sh
PS3="what is you favourite OS?:"
select i in "Linux" "Windows" "Mac";do
echo "you have select $REPLY"
break
done
select和if选择语句的使用
#!/bin/bash
#
PS3="please input a color:"
select color in red white black ; do
if[[ "$color" == "red" ]];then
echo " is good"
elif[[ "$color" == "white" ]] ;then
echo "is ok "
elif[[ "$color" =="black" ]];then
echo"is god"
fi
break
done
select和case
#!/bin/bash
#
PS3="please input a color:"
select color in “red” “white” “black” ; do
case$color in
red)
echo“is goog”
;;
white)
echo“is ok”
;;
black)
echo“is god”
;;
*)
exit
;;
esac
done
break
done
2、汉诺塔(又称河内塔)问题是源于印度一个古老传说。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
利用函数,实现N片盘的汉诺塔的移动步骤
#!/bin/bash
#
step=0
move (){
let step++
echo "$step: move disk $1 $2 -----> $3"
}
hanoi(){
if [ $1 -eq 1 ];then
move $1 $2 $4
else
hanoi "$[$1-1]" $2 $4 $3
move $1 $2 $4
hanoi "$[$1-1]" $3 $2 $4
fi
}
read -p "please input the number of plates: " number
hanoi $number A B C