shell脚本进阶—课堂总结

循环、函数、会持续更新

194d0239284faf60ed120038aacfa7d8

一般过程式编程语言都分为三种:

1.顺序执行

2.选择执行

3.循环执行

接下来我们介绍下 顺序执行和选择执行的的语句的格式和简单的例子

if    语句

格式:

if    判断条件   ;    then

当条件为真时要执行的分支代码

elif

条件为真且不满足第一条判断条件时,分支执行的代码

else

条件为假时要执行的分支代码

fi

例子QQ图片20180510193546

基本的格式如上,但有时判断条件少的时候也可不要else 和它的执行代码。判断条件比较简单时也可以不要elif和它的执行代码,更多情况下else更像时一个兜底的命令,负责结尾的提示。

注意:判断条件也可以为命令,命令结果为真执行后面的分支代码

case语句

格式:

case    变量引用     in

pat1)

判断pat1与变量匹配成功后要执行的分支代码

;;

pat2)

判断pat2与变量匹配成功后要执行的分支代码

;;

*)

之上条件都不匹配后要执行的兜底代码

;;

esac

例子:

QQ图片20180510195410

注意:case语句可以支持通配符,可以用来判断之前的yes no 的问题

平常常用的通配符:

*   表示任意长度的任意字符

? 任意单个字符

[ ]  匹配范围内任意单个字符

a|b  表示a或b

循环执行:

1.将某代码段重复运行多次

2.重复运行多少次
循环次数事先已知
循环次数事先未知

3.有进入条件和退出条件

我们常用的循环语句有for、while、until等语句,下面就详细介绍下他们的用法和格式。

for 语句

for   变量名    in    列表  ;   do
循环体
done

语句执行的机制:

依次将列表中的元素赋值给“变量名”;

每次赋值后即执行一次循环体; 直到列表中的元素耗尽,循环结束

例子:

QQ图片20180510200724

列表生成方式:

1.直接给出列表

2.如{1..100} 或 $(seq  1  2  100 )

3.返回列表的命令  $(cmd)

4.可以使用glob,如*.sh

5.变量引用 :$1 $2 $3 $# $@

while语句

格式:

while     满足条件   ;    do
循环体
done

当条件为真时进入循环、为假使退出循环

条件一般应该有循环控制变量;而此变量的值会在循环体不断地被修正

条件:CONDITION:循环控制条件;进入循环之前,先做一次判断;每一次循环之后
会再次做判断;条件为“true”,则执行一次循环;直到条件测试状态为“false”终止循环

例子:

QQ图片20180510201919

while语句的特殊用法

while    read     line  ;   do
循环体
done < /PATH/FROM/SOMEFILE

依次读取/PATH/FROM/SOMEFILE文件中的每一行,且将行赋值给变量line

until语句

格式

until      CONDITION    ;    do
循环体
done

进入条件: CONDITION 为false
退出条件: CONDITION 为true

until与whtil特别的像 ,只是它们的判断条件有些不同,正好相反。

 

退出循环语句命令:

continue  [n]  提前结束第N层的本轮循环,而直接进入下一轮判断;最内层为第一层

break [n] 提前结束第N层循环,最内层为第1层

这些命令可以使我们的脚本更加的灵活

 

我们可以用这些循环做些有意思的事:

创建无限循环:

while true; do
循环体
done

until 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
echo

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
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

(1)
天策天策
上一篇 2018-05-10 20:09
下一篇 2018-05-10 20:58

相关推荐

  • shell脚本编程示例

    #!/usr/bin/expectspawn scp /etc/fstab 192.168.8.100:/appexpect {“yes/no” { send “yes\n”;exp_continue }“password” { send “magedu\n” }}expec…

    2018-05-12
  • 在VMware上安装CentOS 6 教程

    一、下载并安装虚拟机软件VMware Workstation 14 下载地址: https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html 下载完成后,从网上搜一个注册码来安装注册 二、下载CentOS 6.9安装镜像 下载地址: http://mirrors…

    2018-03-29
  • VM虚拟机克隆中的网络问题

    使用VM中的虚拟机克隆,可以很方便的搭建一些实验或生成环境,但在克隆时应注意几个问题: 1、网络 一般在克隆后,配置好的网络地址都会保留,需要重新对克隆的机器更改IP地址和hostname 具体更改方法为: IP地址:使用vi编辑 /etc/sysconfig/network-scripts/ifcfg-eno16777736文件,将ip地址更改为需要的ip…

    Linux笔记 2018-05-08
  • 7月9日~7月15日(第四周作业)

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 ~]# cp -r  /etc/skel    /home/tuser1 ~]#chmod -R go-rwx  /home/tuser1 2.编辑/etc/group文件,添加组hadoop 编辑/etc/group 写入…

    Linux笔记 2018-07-16
  • 第11周

    总结

    Linux笔记 2018-06-10
  • Apache

    apache的安装

    2018-04-22