一般过程式编程语言都分为三种:
1.顺序执行
2.选择执行
3.循环执行
接下来我们介绍下 顺序执行和选择执行的的语句的格式和简单的例子
if 语句
格式:
if 判断条件 ; then
当条件为真时要执行的分支代码
elif
条件为真且不满足第一条判断条件时,分支执行的代码
else
条件为假时要执行的分支代码
fi
例子
基本的格式如上,但有时判断条件少的时候也可不要else 和它的执行代码。判断条件比较简单时也可以不要elif和它的执行代码,更多情况下else更像时一个兜底的命令,负责结尾的提示。
注意:判断条件也可以为命令,命令结果为真执行后面的分支代码
case语句
格式:
case 变量引用 in
pat1)
判断pat1与变量匹配成功后要执行的分支代码
;;
pat2)
判断pat2与变量匹配成功后要执行的分支代码
;;
*)
之上条件都不匹配后要执行的兜底代码
;;
esac
例子:
注意:case语句可以支持通配符,可以用来判断之前的yes no 的问题
平常常用的通配符:
* 表示任意长度的任意字符
? 任意单个字符
[ ] 匹配范围内任意单个字符
a|b 表示a或b
循环执行:
1.将某代码段重复运行多次
2.重复运行多少次
循环次数事先已知
循环次数事先未知3.有进入条件和退出条件
我们常用的循环语句有for、while、until等语句,下面就详细介绍下他们的用法和格式。
for 语句
for 变量名 in 列表 ; do
循环体
done语句执行的机制:
依次将列表中的元素赋值给“变量名”;
每次赋值后即执行一次循环体; 直到列表中的元素耗尽,循环结束
例子:
列表生成方式:
1.直接给出列表
2.如{1..100} 或 $(seq 1 2 100 )
3.返回列表的命令 $(cmd)
4.可以使用glob,如*.sh
5.变量引用 :$1 $2 $3 $# $@
while语句
格式:
while 满足条件 ; do
循环体
done当条件为真时进入循环、为假使退出循环
条件一般应该有循环控制变量;而此变量的值会在循环体不断地被修正
条件:CONDITION:循环控制条件;进入循环之前,先做一次判断;每一次循环之后
会再次做判断;条件为“true”,则执行一次循环;直到条件测试状态为“false”终止循环例子:
while语句的特殊用法
while read line ; do
循环体
done < /PATH/FROM/SOMEFILE依次读取/PATH/FROM/SOMEFILE文件中的每一行,且将行赋值给变量line
until语句
格式
until CONDITION ; do
循环体
done进入条件: CONDITION 为false
退出条件: CONDITION 为trueuntil与whtil特别的像 ,只是它们的判断条件有些不同,正好相反。
退出循环语句命令:
continue [n] 提前结束第N层的本轮循环,而直接进入下一轮判断;最内层为第一层
break [n] 提前结束第N层循环,最内层为第1层
这些命令可以使我们的脚本更加的灵活
我们可以用这些循环做些有意思的事:
创建无限循环:
while true; do
循环体
doneuntil false; do
循环体
Done自定义打印国际象棋盘
echo -e “\e[1;33m<<******黄色43******>>\e[0m”
echo -e “\e[1;34m<<******蓝红44******>>\e[0m”
echo -e “\e[1;35m<<******洋色45******>>\e[0m”
echo -e “\e[1;36m<<******青色46******>>\e[0m”
echo -e “\e[1;37m<<******白色47******>>\e[0m”
read -p “The first color you want to choose is: ” ning
read -p “The second colors you want to choose are: ” meng
read -p “Please specify the size of the block: ” num
#color=`echo -e “\e[1;${ning}m\e[0m”`
for (( k=1 ; k<=$num ; k++ )) do
N=$N`echo -e “\e[1;${ning}m \e[0m\c”`
done
for (( k=1 ; k<=$num ; k++ )) do
M=$M`echo -e “\e[1;${meng}m \e[0m\c”`
done
#不能直接把很多个空格赋给变量,要用追加变量的方法
for (( i=1 ; i<=8 ; i++ )) ;do
# let n=$k*4
for (( j=1 ; j<=$num/2 ; j++ ));do
if [ $[i%2] -eq 0 ];then
for m in {1..4};do
#echo -e “\e[1;41m \e[0m\e[1;43m \e[0m\c”
echo -e “$N${M}\c”
# else
done
else
for l in {1..4};do
echo -e “$M${N}\c”
#echo -e “\e[1;43m \e[0m\e[1;41m \e[0m\c”
done
fi
echoecho -e “\e[1;33m<<******黄色43******>>\e[0m”
echo -e “\e[1;34m<<******蓝红44******>>\e[0m”
echo -e “\e[1;35m<<******洋色45******>>\e[0m”
echo -e “\e[1;36m<<******青色46******>>\e[0m”
echo -e “\e[1;37m<<******白色47******>>\e[0m”
read -p “The first color you want to choose is: ” ning
read -p “The second colors you want to choose are: ” meng
read -p “Please specify the size of the block: ” num
#color=`echo -e “\e[1;${ning}m\e[0m”`
for (( k=1 ; k<=$num ; k++ )) do
N=$N`echo -e “\e[1;${ning}m \e[0m\c”`
done
for (( k=1 ; k<=$num ; k++ )) do
M=$M`echo -e “\e[1;${meng}m \e[0m\c”`
done
#不能直接把很多个空格赋给变量,要用追加变量的方法
for (( i=1 ; i<=8 ; i++ )) ;do
# let n=$k*4
for (( j=1 ; j<=$num/2 ; j++ ));do
if [ $[i%2] -eq 0 ];then
for m in {1..4};do
#echo -e “\e[1;41m \e[0m\e[1;43m \e[0m\c”
echo -e “$N${M}\c”
# else
done
else
for l in {1..4};do
echo -e “$M${N}\c”
#echo -e “\e[1;43m \e[0m\e[1;41m \e[0m\c”
done
fi
echo代码复制下来有点格式有点乱,不过还可以用
自定义打印矩形
read -p “Please enter the width value: ” high
read -p “Please enter the height value: ” width
for i in `seq $high` ;do
for j in `seq $width` ;do
color=$[RANDOM%7+31]
echo -e “\e[1;${color}m*\e[0m\c”
done
echo
done因为时间原因今天博客就写到这,不过接下来会持续更新
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/98084