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

相关推荐

  • Linux学习笔记——权限管理

    Linux学习笔记——权限管理 前言: Linux下的权限管理与日常使用的windows有众多与众不同之处。这些特性使得Linux在实际生产作业中更加安全与高效,发挥着各种灵活的作用。本文简要写下笔者对Linux权限管理的理解,供参考与复习,欢迎指正。 回顾: 确认文件的权限与所有者: 使用ll(即ls -l) 命令可查看这个文件的详细信息。 $ ll da…

    2018-04-07
  • Linux系统软件包管理介绍

    Linux发行版中附带有成千上万的可用包,其中包括了Internet工具、开发工具、办公工具、游戏等,如果你没有选择完整安装,则只会安装这些包的“子集”,如何删除不想要的包,如何安装遗漏的包,学习LInux系统的软件包管理将解决你的这些问题

    2018-04-20
  • 脚本相关

    变量 echo $name 与 echo “$name” 假如变量是读取文件,前者会自动缩进成一行,后者保留原有格式 (umask=022,mkdir /f1)括号相当于开启一个临时子进程,能读取当前shall的变量等信息,但是进程号不变,命令结束后恢复刚才状态 局部变量,环境变量,只读变量(常量),位置变量,数组 局部变量:只在当前…

    2018-05-14
  • 软件包管理 rpm yum的使用

    软件包管理 链接主要作用是吧各个模块之间互相引用的部分处理好, 使得各个模块之间能够正确的链接,分为静态和动态 静态链接  以.a为后缀  把程序对应的依赖库复制到包           升级难 需重新编译  占用空间多 迁移容易 动态链接  以.so为后缀 把依赖加做动态链接    占用空间少  升级方便           若一个库被删,那么所有依赖此库…

    Linux笔记 2018-04-22
  • shell脚本编程基础

    简要概括一点脚本小知识

    Linux笔记 2018-04-14