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

相关推荐