基于linux shell的自动化脚本

1:linux shell中常用的特殊变量
     (1) $@  所有参数列表。如"$@"  , 是传给脚本的所有参数的列表
     (2) $0    是脚本本身的名字,$1是传递给该shell脚本的第一个参数
     (3) $?   最后运行的命令的结束代码(返回值), 或函数的返回值。
     (4) $$   shell本身的PID(ProcessID)
 
 2: shell 脚本的第一行

 #!/bin/bash
 此脚本使用/bin/bash来解释执行,#!是特殊的表示符,其后面根的是此解释此脚本的shell的路径。

3:shell的定义变量与使用变量
定义变量    name="Liyang"
使用变量: echo $name   or  my_name = $name ; 只要在变量名前面加美元符号即可
注: echo ${name},加上花括号也可以。echo为输出显示命令

4:双引号的使用
str="Hello, I know you are \"$name\"! \n"   双引号里可以有变量($变量名),也可以有转义字符
echo $str    #echo 输出打印变量
注意:单引号只会原样输出

5: shell中的if使用规则
##多行
if [condition1];
then
    command1
elif [condition2];
    command2
else
    commandN
fi
##单行
if [condition];then command;fi

注意:[  ]表示条件。注意这里的空格很重要。要注意在'['后面和']'前面都必须要有空格
         在shell中,condition的写法 [ $a != 1 || $b = 2 ]是不允许出,要用[ $a != 1 ] || [ $b = 2 ],而双括号就可以解决这个问题的,[[ $a != 1 || $b = 2 ]]。
shell的if条件表达式的一些常用规则:
    https://blog.csdn.net/doiido/article/details/43966819

6:**shell中的for/while循环**
for (( C风格 ))  
do
    command
done

while [ condition1 ] 
do
    command
done

while(( condition1 ))
do
    command
done

例子:

while [ $times -lt 1000 ]

do

        XXXX

      times=$(($times+1))

done

7: shell中基于命令去获取所需的变量,实现变量的赋值

eg: 通过ip获取ip所在网卡(已知ip网址$ip_addr,文件名$file_name):

nic_name=`ip address | grep $ip_addr` | awk '{printf$8}'`

sed -i "s/nic/nic=$nic_name/g" $file_name   ##sed -i实现文件中文本替换

sed -i "s/^nic=.*/nic_name=\"${nic_name}\"/"  ##sed -i实现文件中文本替换
8:基本的实现框架

#全局变量
para="XXXXXXXXXX"
#这里可以定义一些全局变量

#-------------------------
function parse_cmdline() {
    while getopts ":参数a:参数b:" opt; do 
        case $opt in 
            参数a)
                para=$OPTARG
                ;;
            参数b)
                para=$OPTARG
                ;;
            *)
                ;;
            esac
        done
}

#--------------------------
function XXXAfunc() {
    command;
}

#--------------------------
function XXXBfunc() {
    command;
}

#--------------------------
function XXXCfunc() {
    command;
}

#---------------------------
main() {
    #命令解析函数
    parse_cmdline "#@"
    ### 根据解析结果进行对应功能匹配
    ### XXXfunc表示是实现某个具体功能的函数块
    if [[ $para == "XXXXA" ]]; then
        XXXAfunc
    elif [[ $para == "XXXXB" ]]; then
        XXXBfunc
    elif [[ $para == "XXXXC" ]];then
        XXXCfunc
    fi
}

#---------------------------
main "$@"

9:特殊环境的常用处理方法:

(1)source 文件 或者 source $变量=XXX    #可以将文件或变量利用source命令变成临时的环境变量,这样在变化的环境中,即使某些内容变化,只要文件中的内容不丢失,那么所需的变量就能获取到。

  (2) 添加定时任务:写一个脚本,在/etc/crontab中添加定时任务

*/1**** root /bin/bash /root/XXXX.sh >> /dev/null 2>&1 & 

(>> /dev/null 标准输出重定向到/dev/null,

2>&1标准错误重定向到标准输出==》标准错误重定向到/dev/null

& 后台执行)

10: 变量的累加/乘积

a=$(($a + 1))

b=$(($b*4))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值