Linux 脚本编写学习总结

这篇博客总结了Linux脚本学习的重点,包括函数定义、调用规则、参数传递、变量赋值、条件判断、数组操作以及一个数据抓取脚本的实例。通过实例讲解了如何在脚本中正确使用这些元素,对于网络设备监控数据的自动化处理非常有帮助。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在进行网络设备监控数据抓取,为了方便进行数据收集,抽时间简单的学习了脚本编写。

1. 函数定义

脚本中以function 定义函数,同Javascript 中一样,不同的时,脚本默认可以不写function. 常见的脚本函数定义:

方式一

function getA(){
    echo 'hello'
}

方式二

getB(){
    echo 'world'
}

2. 调用关系

脚本函数一定要声明在调用前,必须先声明函数,才可以调用,顺序执行。如果先调用后声明会报错,找不到函数。不同于JavaScript 。

正确的方式,注意函数调用时,直接用函数名即可,不需要添加().

声明函数
function getHello(){
    echo 'hello world'
}

getHello

3 参数传递

脚本函数参数不是声明在函数里,不同JavaScript 和Java 等语言,参数写在行数括号内,脚本函数的方法不写参数。参数是从输入代入。参数通过 $n 进行获取

function test(){
    echo $1;
}

test 124

4 变量赋值

变量赋值时,左右两端不能有空格,负责会将空格解析。

正确示例
a=124
错误示例
a = 124
a= 124
a =124

5 条件判断

条件判断时,特别是if 判断字符串相等时,要注意空串。

当$a 不为空时,此判断执行没有问题,当$a 为空时,会报错。原因是当$a 为空时,
此判断条件变为了 == 'a' 故报错。
if [ $a == 'a' ];then
   echo 'yes'
else
   echo 'no'
fi

正确写入如下:

多加一个[]进行空判断
if [[ $a == 'a' ]];then
   echo 'yes'
else
   echo 'no'
fi

或 添加一个连接值,保证不为空,进行判断

if [[ "$a"x == "a"x ]];then
   echo 'yes'
else
   echo 'no'
fi

6 数组处理

通过()进行数组定义赋值。值用空格隔开

test=(1 2 3 4 5 6)
输出
echo ${test[@]}
长度
${#test[*]} 或 $(#test[@]])
循环输出
for i in ${test[*]}
do
  echo $i
done
或
for ((i=0;i<${#test[*]};i=$i+1))
do
  echo ${test[$i]} 
done

7 样例数据抓取脚本

#!/bin/bash

function getNet(){
    date;
    echo "start snmpwalk "$1" data is running"
    snmpwalk -v 2c  -On -c public -t 600 $1 > $1"_public_oid.txt";

    snmpwalk -v 2c -c public -t 600 $1 >$1"_public_name.txt";

    snmpwalk -v 2c  -On -c public -t 600 $1 1.3.6.1.4.1 >$1"_private_oid.txt";

    snmpwalk -v 2c  -c public -t 600 $1 1.3.6.1.4.1 >$1"_private_name.txt";
    date;
    echo "end snmpwalk "$1" data is finished"

}

function call(){

    for line in $(cat $1)
    do
        echo "get current "$line
        flag=`snmpwalk -v 2c -c public  -t 2  $line  1.3.6.1.2.1.1.1 |grep SNMPv2-MIB|awk -F ':' '{print $1}'`

        if [[ $flag == 'SNMPv2-MIB' ]];then

           getNet $line
        else
           echo $line' snmpwalk is fail'
        fi
    done
}

if [ ! -n "$1" ] ;then
    echo "脚本后面必须参加ip参数文件"
else
    echo "开始执行脚本"
    call $1
fi

1. Linux 脚本编写基础 1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh   符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。   当编辑好脚本时,如果要执行该脚本,还必须使其可执行。   要使脚本可执行: 编译 chmod +x filename 这样才能用./filename 来运行 1.1.2 注释   在进行shell编程时,以#开头的句子表示注释,直到这一行的结束。我们真诚地建议您在程序中使用注释。   如果您使用了注释,那么即使相当长的时间内没有使用该脚本,您也能在很短的时间内明白该脚本的作用及工作原理。 1.1.3 变量   在其他编程语言中您必须使用变量。在shell编程中,所有的变量都由字符串组成,并且您不需要对变量进行声明。要赋值给一个变量,您可以这样写: #!/bin/sh #对变量赋值: a="hello world" # 现在打印变量a的内容: echo "A is:" echo $a 有时候变量名很容易与其他文字混淆,比如: num=2 echo "this is the $numnd" 这并不会打印出"this is the 2nd",而仅仅打印"this is the ",因为shell会去搜索变量numnd的值,但是这个变量时没有值的。可以使用花括号来告诉shell我们要打印的是num变量: 网管u家u.bitsCN.com num=2 echo "this is the ${num}nd"   这将打印: this is the 2nd 1.1.4 环境变量 由export关键字处理过的变量叫做环境变量。我们不对环境变量进行讨论,因为通常情况下仅仅在登录脚本中使用环境变量。 1.1.5 Shell命令和流程控制 在shell脚本中可以使用三类命令:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值