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

相关推荐

  • 文件管理基础知识

                   文件管理 目录篇 / :根目录 bin    boot    dev    etc    home    root    run     sbin    tmp    usr   var 字符界面颜色的意义: 蓝色=目录、绿色=可执行文件、红色=压缩文件、浅蓝色=链接文件 灰色=其他文件 boot:引导文件的存放目录  bin:…

    Linux笔记 2018-04-08
  • 第六周博客作业

    一、简述osi七层模型和TCP/IP五层模型
    二、简述iproute家族命令
    三、详细说明进行管理工具htop、vmstat等相关命令,并举例
    四、使用until和while

    2018-04-20
  • 第二周作业

    1,Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示
    2,bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示
    3,使用命令行展开功能来完成以下练习

    2018-06-28
  • TEST

    TEST

    Linux笔记 2018-07-30
  • 相信过程-马哥教育

    IT工程师工作和学习都是比较枯燥的,过于目标化忽略了过程本身并不适合我,如果我来这里能使我全心全意投入到一段学习当中,我觉得来这里目标就达到了。其他的事情自然会水到渠成。 大家共勉!

    2018-07-21
  • 文件系统挂载

    一、mount、umount、mount -o remount、findmnt、lsof、fuser
    二、挂载设置ACL权限、模拟U盘功能、losetup
    三、UUID故障处理、分区迁移与恢复、永久挂载光盘分区、挂载USB、永久挂载文件夹
    四、SWAP、挂载光盘、制作ISO镜像、制作Centos6Everthing
    五、df、du、dd备份/恢复/修复硬盘

    2018-05-26