Shell脚本-循环基础

Shell脚本-循环基础

背景:

正在学习Shell脚本之循环,发现Shell的循环和其他编程语言大同小异,逻辑上都是相通的,但在使用格式上却有点不同,在学习完Shell循环后,将学习的心得体会记录下来,以备今后复习。

介绍:

什么是Shell脚本:

      shell script是利用shell的功能所写的一个程序,这个程序是使用纯文本文件,将一些shell的语法与指令写在里面,然后用正规表示法,管道命令以及数据流重导向等功能,以达到我们所想要的处理目的。

      shell script就像早期dos年代的.bat,将许多指令汇整写一起,让使用者很容易地就能够一个操作执行多个命令,而shell script还提供了数组,循环,条件以及逻辑判断等重要功能,让使用者可以直接以shell来写程序,而不必使用类似C程序语言等传统程序编写的语法。

Shell–for循环

格式1:

格式:for name [in words …] ; do COMMANDS;done

其中for为关键字,表示下面是使用的for循环

name是循环时使用的名字,它代表被循环列表里的具体值。在循环体里,我们不知道系统循环到哪了,也就不知道具体值是什么,所以需要一个统一的名字来代表这个值,而这里的name就是代表这个值的,它的名字是可以自己随意取的,但是要避开使用一些系统关键字和保留字。

in words … 代表使用的循环列表,可以是一串字符也可以是数组,如for name in word1 word2 word3 …,其中in是关键字,如果后面有循环列表就需要使用in。

do COMMANDS :其中do是关键字,表示后面是循环执行的命令,COMMANDS代表命令集合,可以是多个命令

done代表循环结束

如果这些代码是写在一行的,需要用”;”来分开,如果是分行写可以不用加”;”,后面会有列子供参考。

例子1:

for i in zhangsan lisi wangwu;do
        echo your name is $i
done

输出效果:

Shell脚本-循环基础

例子2:

for i in {1..10};do
     echo number is $i
done

输出效果:

Shell脚本-循环基础

例子3:

 for i in `seq 10`;do #循环10次,seq 10命令表示1到10
          useradd user$i #添加用户
          echo user$i is created #提示用户添加
          password=`tr -dc 'a-zA-Z0-9' < /dev/urandom |  head -c 8` #随机生成8位数密码
          echo user$i:$password >> /root/user.log #将密码写入日志文件
          echo $password | passwd --stdin "user$i" &> /dev/null #为用户添加密码
  done #结束
  unset password #释放变量password

输出效果:

Shell脚本-循环基础

生成的密码:

Shell脚本-循环基础

格式2:

格式:for (( exp1; exp2; exp3 )); do COMMANDS; done

这个用法和C语言的for循环差不多,不过这里用两个()括起来

exp1表示循环的起始值

exp2表示循环执行的条件,满足条件则执行,不满足则退出循环

exp3表示循环成功执行后的操作

其他的和第一种格式是一样的

例子:

for ((i=0;i<10;i++));do
      echo number is $i
done

输出效果:

Shell脚本-循环基础

Shell循环–while

格式:

格式:while COMMANDS; do COMMANDS; done

其中while为关键字,表示后面使用while循环

COMMANDS表示循环执行条件,COMMANDS结果为true时执行循环,为false则退出循环

do COMMANDS 表示循环执行的命令集

done 表示循环结束

例子:

i=0 #初始化i
while [ $i -lt 10 ];do #当i 小于10时执行循环体里的命令
      echo $i #输出 i 的值
      let i++ # i+1
done #结束

输出效果:

Shell脚本-循环基础

从while的格式可以看出,while更适合循环次数不确定的场合,因为只要是true,while就不会停止。这样就可以做一个死循环。

while true;do #true表示真,
      echo godai
done

执行这个脚本会一直输出gidai,直到我们强行结束这个脚本。

原创文章,作者:657188918,如若转载,请注明出处:http://www.178linux.com/85359

(0)
657188918657188918
上一篇 2017-08-26 09:23
下一篇 2017-08-26 12:26

相关推荐

  • Linux基础目录名称及功用

    FHS目录规则 Filesystem Hierarchy Standard(文件系统目录标准)的缩写,多数Linux版本采用这种文件组织形式,类似于Windows操作系统中c盘的文件目录,FHS采用树形结构组织文件。FHS定义了系统中每个区域的用途、所需要的最小构成的文件和目录,同时还给出了例外处理与矛盾处理。   FHS定义了两层规范,第一层是,…

    Linux干货 2016-10-30
  • shell脚本编程

    一、编程基础: shell脚本是包含一些命令或声明,并符合一定格式的文本文件 shell脚本的用途有: 自动化常用命令 执行系统管理和故障排除 创建简单的应用程序 处理文本或文件 1)     第一步:使用文本编辑器来创建文本文件 script.sh 并编写内容 格式要求:首行shebang &nb…

    Linux干货 2016-08-15
  • linux 记忆命令心得

    新开始学linux,要记住很多的命令,毕竟这是linux的根本,没有这些命令,连操作都没办法进行。所以我写这个的目的是我自己记忆,也是想帮助一下一同学习linux的同学们,提供自己记忆这些的方法,抛砖引玉,大家共同讨论一下。 我的记忆方法就是分类,把命令分成输出类,名词累,操作类。 输出类就是说的例如w,who,whoami,echo,ifcogfig,wh…

    Linux干货 2017-07-15
  • Docker 之初次体验

    一、Docker 简介  lxc linux container,openvz  容器中各虚拟机只有一个内核,而是多个用户空间  在库中完成虚拟化,比如wine 或者在windows中运行bash  在应用程序的运行级别提供虚拟化,比如jvm   pstree , pid 为1 的进程  …

    Linux干货 2015-01-16
  • 第一周n28

    1.计算机的组成及功能 计算机由五大部件组成。控制器、运算器、存储器、输入输出设备。 1.控制器(Control):是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问等。 2.运算器(Datapath):运算器的功能是对数据进行各种算术运算和逻辑运算,即对数据进行加工…

    Linux干货 2017-12-03
  • 实现基于MYSQL验证的vsftpd虚拟用户

    马哥教育面授21期 运维 vsftpd MySQL 说明:本实验在两台CentOS主机上实现,一台做为FTP服务器,一台做数据库服务器 一、安装所需要包和包组: 在数据库服务器上安装包: yum –y install mariadb-server mariadb-devel systemctl start mariad…

    Linux干货 2016-12-21