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学习从入门到打死也不放弃,完全笔记整理(持续更新)

    这是一片学习笔记的汇总,同步51cto,查看内容请点击各章节介绍。

    Linux笔记 2018-04-07
  • 06葵花宝典之linux网络、进程管理和shell循环语句

    06葵花宝典之linux网络、进程管理和shell循环语句 作为服务器,其输入输出功能在大多数时候都是通过网络提供的,网络功能对于服务器而言是至关重要的。 一、OSI七层模型和TCP/IP四层模型 1、OSI七层模型 OSI七层模型是参考ISO(International Standard Organization国际标准化组织)所指定的一个用于通信系统间互…

    2018-04-15
  • Linux任务计划、周期性任务执行

    Linux任务计划、周期性任务执行 at at命令用于在指定时间执行命令。执行结果会通过邮件发送给用户 at允许使用一套相当复杂的指定时间的方法。它能够接受在当天的hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行 语法 at(选项)(参数) atq: 查询任务列表 atrm: 删除指定任务 选项 -f:指定包含具体指令的任务文件;…

    Linux笔记 2018-04-03
  • Linux运维初步—第三周

    Linux运维初步—第三周总结与练习 标签(空格分隔): linux入门 linux 运维 — 写作:N27_loong 2017-7-27[TOC] 一、本周主要内容回顾: 用户(组)管理: – 增加用户或组,指定用户权限、家目录路径、用户属组属主的变更; – 用户密码和组密码加密和验证的设计和文件存储位置;…

    Linux笔记 2018-07-27
  • 学习笔记(5)

    学习笔记(5)

    Linux笔记 2018-04-22
  • 磁盘存储和系统文件

    ll /dev/sd*查看硬盘设备ll dev/sda 8,0主要设备号和次要设备号mknod专门创建块文件 mknod /data/sda 8,1dd if=data/zerofile of=test bs=1M count=10hexdump -c test 查看里面lsblk查看硬盘名cenos6 加硬盘名字会变 7会自己排列head:磁头track:…

    Linux笔记 2018-05-03