Shell 脚本的进阶

if case

过程试编程语言就三种形式

顺序执行,    选择性执行,     循环执行

条件判断

选择if语句       if 是个关键字,不能独立用,要配合用,(不是内部命令也不是外部命令)

if 的语法 O(YW`W7EV}5))09AUMB@~X8

if 语句可以嵌套

单分支

if  判断条件 ; then

条件为真 执行后面的语句

fi

结尾

双分支

if 判断条件; then

条件为真的分支代码

else      条件为假的分支代码

fi

结束

多分支
if 判断条件1; then

条件1为真的分支代码

elif  判断条件2;then

条件2为真的分支代码

elif   判断条件3;then

条件3为真的分支代码

eles

以上条件都为假的分支代码

fi

结束

逐条件进行判断,第一次遇为“真”条件时,执行其分支,而后结束整个if语句

写个年龄小于18岁  。18  《AGE》60 ,60《AGE《150     151《AGE97$T)SHC@B4~U40~5J7QW0Z

执行脚本看下

J(QB6I0L}O2I0EL9H6CV

if 语句不适合用来判断

case 语句

case支持glob风格的通配符

*  :任意长度,任意字符

? :人以单个字符

[] : 指定范围内的任意单个字符

a|b     a或b

格式

case  变量引用 “$  ”  in

PAT1)

分支1

;;

PAT2)

分支2

;;

…..

…..)

默认分支

;;

esac

结束

PAT 可以用通配符表示

判断YES 或者NO的脚本

H8UJ[5`GP(]`SCT08H8$K)H

执行看下

WQU28Z(GK2M_6@~ZCXTI{TL

for ,while , until

是循环执行(重复运行次数)

循环次数已知和循环次数未知

有条件进入和条件退出  和二为一,满足执行,不满足退出

for 循环   格式:

for    变量名(*不是变量引用*  in(in后面跟列表,中间空格隔开;循环是看列表有几个就循环几次);do

循环体

done

执行机制:依次将列表的元素赋值给“变量名”,每次赋值后执行一次循环,直到列表中的元素耗尽,循环结                     束

列表的生成方法

1:直接给出列表

B71Y[DK_C}II){4RS$O1AF8

2:整数列表

a  :           {start..end}

EN}P_NG(E8_266%5O4]A$34

{10..2..3}  10到2 步进负3(从大到小是负 从小到大是正){10..20..3} 10到20 步进正3

ZJ9B7FDAWEV4YNL$][MAH50

b   :    $(seq [start [step]] end)

seq  1  2  10  表示的是1-10  以2为步进  `seq 1 2 10 ` 是个命令 引用命令的用“反向单引号

~EJ4NW_4UP]J)Q8E$JD63DD

c   只要是生成列表的命令都可以 ls /boot

4EH8SQGTZ[IJTKNQ@QI}D{H

3:  返回列表的命令

$(COMMDAND)   与`COMMAND` 效果一样

UYM_AZOOTK6ODI`~R6FJ[6B

4:  引用glob    通配符 *.sh

2}2~NP~FZO4F{09H0{0CGKK

5:  引用变量: $@  ,    $#

在写shell脚本中  declare  是声明变量类型的

在shell中如果不声明变量类型,默认是字符串,但是字符串是无法进行四则运算的,所以要进行运算必须声明变量为数字类型

格式 :  declare [+/-] [选项] 变量名

–     #给变量设定类型属性

+      #取消变量类型属性

-a     #将变量声明为数组型

-i      #声明整数型

-x     #声明环境变量

-r      #将变量声明只读变量

-p      #显示指定的变量的被声明类型

CT0)W4C{58_U$AR0ZT~FV9K

实行脚本

4XYNA({RQY1B@MJN{K}COPX

搜索网段 看看那些网段被用

Y1G$_W$NGO79J{UOU@81%TH

if 前面的大括号“{}” 可以加速脚本的加速访问是并行执行,不是顺序执行,   &表示在后台执行 wait是后台执行完表示结束  不加wait  手工去敲回车键

也可以把找出来的网段重定向到文件中去

WSPC41QO0OM3F482R292~)W

查看文件 cat scannetlist.txt    扫描出来的网段

K__7L$XE{3ZNYU1F15KRB84

 

 

 

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/97744

(0)
祝韵杰-桃子祝韵杰-桃子
上一篇 2018-05-07 20:44
下一篇 2018-05-07 21:08

相关推荐

  • Work One

    1、描述计算机的组成及其功能。 计算机系统 硬件(Hardware)系统 软件(Software)系统 Hardware:据冯·诺伊曼体系可分为运算器、控制器、存储器、输入设备、输出设备五大部分组成。 运算器:负责对数据进行各种算术运算和逻辑运算,即对数据进行加工处理。 控制器:CPU的组成部分之一,对程序规定的控制信息进行解释,根据其要求进行控制,调度程序…

    2018-06-26
  • linux下rpm、yum、sed基础用法介绍

    一、RPM包管理介绍 RPM是radhat系列和suse系列等的包管理系统,主要管理系统上软件包的安装、卸载和查询 rpm安装语法:rpm [install options] [programname…] 常用安装option:-i,表示安装程序包 -v,表示输出详细安装过程 -h,安装过程输出进度条 -U,升级程序包 -c,查看程序包的配置文件…

    2018-04-01
  • 文件管理基础知识

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

    Linux笔记 2018-04-08
  • Linux基础入门介绍、系统组成和获取命令帮助

    描述计算机的组成及其功能。
    按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别。
    描述Linux的哲学思想,并按照自己的理解对其进行解释性描述。
    说明Linux系统上命令的使用格式;详细介绍ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,并配合相应的示例来阐述。
    如何在Linux系统上获取命令的帮助信息,请详细列出,并描述man文档的章节是如何划分的。
    请罗列Linux发行版的基础目录名称命名法则及功用规定。

    2018-06-23
  • yum使用

    第一部分yum基础 yum 参数: search (搜索某个软件名称或是描述的重要关键字) list(类似于rpm -qa) info(类似于rpm -qai) provides(类似于rpm -qf) eg:搜索磁盘陈列raid相关的软件有哪些? [root@centos7 yum]#yum search raid 找出mdadm这个软件的功能为何? [r…

    Linux笔记 2018-04-20
  • Linux系统上命令的使用格式

    详细介绍ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、 ifconfig ifconfig [-a] [-v] [-s] <interface> [[<AF>] <address>] [add <address…

    Linux笔记 2018-05-11