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

相关推荐

  • 基础不牢,地动山摇——软链接与硬链接。

      inode 说明   说到软链接与硬链接就不得不提到一个概念——inode (索引节点号)。简单说linux系统中索引节点号与身份证号码一样,同一分区中文件将会被分配唯一的号码就是索引节点号。文件名是为了方便人使用,而索引节点号是计算机来区分文件的标志。 1.硬链接 硬链接(hard link)就是一个文件的一个或多个文件名。下面用试验说明硬链接特性 例…

    2018-07-29
  • 简述一下TCP三次握手四次挥手

    TCP,名为传输控制协议,是一种可靠的传输层协议,IP协议号为6。 原则上任何数据传输都无法确保绝对可靠,三次握手只是确保可靠的基本需要。 TCP三次握手 TCP建立连接为什么是三次握手,而不是两次或四次? 个人理解:因为要双方都要确定对方的网络没毛病,通讯正常。 还有一个网上看到的说法,我觉得很有意思: 我:1+1等于几? 她:2,2+2等于几? 我:4 …

    2018-04-30
  • Linux基础之修改提示符格式

    总是保存失败

    2018-03-29
  • 计算机组成及其功能

    计算机组成

    2018-05-09
  • Linux第五周作业

    1、简述rpm与yum命令的常见选项,并举例 RPM: rpm命令:rpm  [OPTIONS]  [PACKAGE_FILE] 安装:-i, –install 升级:-U, –update, -F, –freshen 卸载:-e, –erase 查询:-q, –query 校验:-V, &#821…

    2018-07-16
  • 第四周

    总结

    Linux笔记 2018-04-22