linux Shell学习笔记最后一节,温故与知新

脚本编写技巧

脚本文件名命名规则

文件名的字符包括

字母、数字、"."、"_"和"-", 注意:脚本的文件名命名不能以数字开头。

脚本文件名的命名,尽量使用英文单词、词组或短句的缩写。

脚本版本管理:

脚本作用.主版本号.修改次数.shell类型

变量命名规范

变量名可以由数字和字母组成

变量名采用全部英文字符小写的方式

变量名称尽量使用缩写,最好不要超过6个字符

${变量名} 例:${port},${ipaddr}…

脚本代码注释规范

脚本代码注释可以使用"#"和";(分号)"两种方式进行注释。#一般由于描述性的注释,旨在说明代码的作用或怎么使用。

而;通常用于示例性的注释,特别是在一些配置文件中常常会用到,因此我们沿用这两种方式来对我们的脚本进行注释。

引用符号使用规范

尽量少用单引号

对极个特殊字符进行屏蔽特殊含义时,使用\(反斜线)进行屏蔽

使用带引号进行屏蔽字符时,单引号内一般不适用其他引用符号,除非是打印特殊符号本身。

使用反引号进行执行一个shell命令时,反引号内一般加其他引用符号。

脚本函数定义规范

变量名可以由数字和字母组成

使用驼峰命名法(从第二个单词开始,每个单词首字母大写)

名字尽量不使用缩写,除非它是众所周知的

名字可以有两个或三个单词组成,但通常不应多于三个

文本输出排版

第一天课后作业

1、grep "20081011" text.txt                            取出这一天的数据

2、grep "200804" text.txt                            取出这一个月的数据

3、grep "200806" text.txt | grep -v "-"                    取出一个月的上涨数据

4、grep "200807" text.txt | grep -v "-" | wc -l            列出有几天是上涨个数,带统计

5、grep "200808" text.txt | sort -k5 -n | tail -1            判断上涨,然后tail取最后一行

grep "200808" text.txt | sort -k5 -r |head -1            判断上涨,然后head取第一行

6、grep "200810" text.txt | awk '{if($4>0){print $1,$5}}'    取出一月中上涨数据时间和上涨幅

7、grep "200811" text.txt | awk '{if($4>5 && $4<20){print $0}}'        判断区间取出整行

脚本代码实例分析1

编写一个shell脚本,执行脚本后自动ping以下地址:

192.168.1.1,192.168.1.31

以上IP地址直接写在脚本之中。执行完成后,

应显示能够ping通的IP地址和不能够ping通的IP地址

#!/bin/bash

if ping 192.168.1.1 -c 1

then

echo "192.168.1.1 online"

else

echo "192.168.1.1 offline"

fi

if ping 192.168.1.31 -c 1

then

echo "192.168.1.31 online"

else

echo "192.168.1.31 offline"

fi

脚本代码实例分析2

修改分析1,但是从iplist.txt中读取IP

#!/bin/bash

for ip in `cat iplist.txt`

do

if ping $ip -c 1

then

echo "${ip} online"

else

echo "${ip} offline"

fi

done

脚本代码实例分析3

修改分析2,去除无用的信息

#!/bin/bash

for ip in `cat iplist.txt`

do

if ping $ip -c 1 >/dev/null 2>&1

then

echo "${ip} online"

else

echo "${ip} offline"

fi

done

脚本代码实例分析4

修改分析3,生成记录

#!/bin/bash

>hoststatus.txt

for ip in `cat iplist.txt`

do

if ping $ip -c 1 >/dev/null 2>&1

then

echo "${ip} online" |tee -a hoststatus.txt

else

echo "${ip} offline" |tee -a hoststatus.txt

fi

done

脚本代码实例分析5

产生一个IP地址池,生成255个IP,并修改分析4,实现多线程ping

#!/bin/bash

>iplist

for ip in `seq 1 255`

do

echo "192.168.1.${ip}" >>iplist

done

#!/bin/bash

>hoststatus.txt

>temp

fastping()

{

if ping ${1} -c 1 >/dev/null 2>&1

then

echo "${ip} online" |tee -a temp

else

echo "${ip} offline" |tee -a temp

fi

}

for ip in `cat iplist.txt`

do

fastping $ip &

done

wait

sort -t. -k4 -n temp >hoststatus.txt

rm temp

temp ./ping.sh            测试一个脚本执行多久

(0)

相关推荐

  • 学习shell脚本之前的基础知识[图文]

    日常的linux系统管理工作中必不可少的就是shell脚本,如果不会写shell脚本,那么你就不算一个合格的管理员.目前很多单位在招聘linux系统管理员时,shell脚本的编写是必考的项目.有的单位甚至用shell脚本的编写能力来衡量这个linux系统管理员的经验是否丰富.笔者讲这些的目的只有一个,那就是让你认真对待shell脚本,从一开始就要把基础知识掌握牢固,然后要不断的练习,只要你shell脚本写的好,相信你的linux求职路就会轻松的多.笔者在这一章中并不会多么详细的介绍shell脚本

  • shell脚本学习与总结

    1.shell 脚本是区分小写的2.Unix特殊字符有: ( ; $ ? & * () [] ` ' " + 使用其时要进行转义()3.Shell的注释以#开头4.函数的定义Function fuction_name(){Command to execute}调用时直接用function_name.5.控制结构1)If...then语句If [ test_command ]ThenCommandsif2)If...then...else语句If [ test_command ]ThenC

  • linux shell数组深入学习理解

    bash shell只支持一维数组,但参数个数没有限制. 声明一个数组:declare -a array(其实不用声明,按数组方式直接赋值给变量即可,BASH就知道那是数组) 数组赋值:(1) array=(var1 var2 var3 ... varN)(2) array=([0]=var1 [1]=var2 [2]=var3 ... [n]=varN)(3) array[0]=var1    arrya[1]=var2    ...    array[n]=varN 计算数组元素个数:${#

  • Shell脚本编程中常用的数学运算实例

    这部分主要讨论数学相关的shell脚本编程. 加法运算 新建一个文件"Addition.sh",输入下面的内容并赋予其可执行的权限. 复制代码 代码如下: #!/bin/bash echo "Enter the First Number: " read a echo "Enter the Second Number: " read b x=$(expr "$a" + "$b") echo $a + $b =

  • shell中case的用法学习笔记

    shell中的case语句: 可以把变量的内容与多个模板进行匹配,再根据成功匹配的模板去决定应该执行哪部分代码. 使用格式:case 匹配母板 in模板1 [ | 模板2 ] - ) 语句组 ;;模板3 [ | 模板4 ] - ) 语句组 ;;esaccase语句的匹配是从上往下地匹配顺序.因此,case语句编写的原则是从上往下,模板从特殊到普通.在C语言里,case语句中有default模板,而在shell程序设计中,可能将模板写成*,就可以完成相同的功能. 例1: 复制代码 代码如下: #!

  • linux Shell学习笔记第四天

    本节课的脚本也同样共享在share中了. 第四天:循环结构 内容大纲: 应用实例分析 for循环 while循环 for循环的原理 达到效果 根据昨天的菜单修改. 选择1.2.3后还会提示是否继续选择的功能.选择4仍然是退出操作. for variable in list list 变量列表池 do command1 command2 done 实例一 forlist.sh #!/bin/bash #for with list for loop in 1 2 3 4 5 定义loop的变量 1

  • linux Shell学习笔记第一天

    以下是Shell学习1-2天学习笔记 ---------我是分隔符--------- 硬件去执行, 内核与硬件之间进行操作. 命令解析器. shell脚本的组成元素 系统命令 文本处理工具(sort.grep.sed.awk-) 变量 条件判断 环循结构 函数 Shell Scripts Center(SSC) ---------------------------- 非负Grep / awk 几天. 统计Wc Sort 排序 sort|head / sed字段处理 awk 数据区域判断 awk

  • linux Shell学习笔记第五天

    第五天:函数与任务调度 函数的优势 分而治之f 协同合作 方便管理 维护简单 函数的结构 function 函数名() { 命令1 命令2 命令3 } 函数的参数传递 向函数传递参数就像在一般脚本中使用特殊变量$1,$2,$3-$9一样,函数取得所传参数后将原始参数传回shell脚本,因此最好先在函数内重新设置变量保存所传的参数.这样如果函数有一点错误,就可以通过已经本地化的变量名迅速加以跟踪. 函数文件 当你手机一些经常使用的函数时,可以将之放入函数文件中并将文件载入shell. 文件头应包含

  • 如何短时间内学好一门语言 shell脚本语言为例

    这里我分享的是学习计算机shell脚本语言的方法,可能你不是在软件行业,但我建议也看看,因为我并没有讲什么技术细节,主要分享的是提炼出的通用性方法,这是对学习任何东西都是有用的. 当然,如果你好奇心足够强的话,建议也可以按照下面的方法来尝试一下,因为科学家已经预测:以后的世界就是一个软件定义的世界,机器人和人工智能会非常普及,而支持它们运行的除了我们看得见的硬件,最关键的就是里面的软件. 所以,学会编程以后就不仅仅只是软件从业人员需要掌握的技能,任何人都可以掌握它,既可以用它来不断提高工作效率,

  • linux Shell学习笔记第三天

    第三天:条件选择 大 纲 应用实例分析 条件测试 if-else-fi case-in-esac 实现功能菜单: 执行脚本后 按1,显示当前时间 按2,显示CPU负载 按3,显示剩余内存 按0,退出脚本 按其他字符,提示超出选择范围后退出 分析步骤. #date +%T uptime awk截取 free –m 条件测试格式 #test –option obj #[ -option obj ] 返回结果 表达式内容测试结果是真的 表达式内容测试结果是假的 测试的对象分类 执行结果(执行成功或失败

随机推荐