linux下Bash局部变量及信号捕捉等概念解释

1.脚本配置文件

/etc/rc.d/init.d/服务脚本可支持配置文件,并放置在/etc/sysconfig/下同名的配置文件

2.局部变量:只对本函数内部等有效,关键字为local

 以两个脚本显示变量带或不带local时的区别

 2.1编写如下脚本:vim A1.sh

#!/bin/bash

A=1

SUM() {

 A=8

}

SUM  调用函数

for I in `seq $A 10`; do

  echo -n "$I   "

done

echo 

 ./A1.sh:执行脚本显示结果如下:

wKioL1coZkChZiyZAABh9rwqEmw137.jpg

 2.2编写如下脚本:vim A2.sh、

#!/bin/bash

 A=1

SUM() {

 local A=8

}

SUM  调用函数

for I in `seq $A 10`; do

  echo -n "$I   "

done

echo 


wKioL1coZqez8rYvAABktMtiqOc348.jpg

3.命令mktemp创建临时文件或目录

格式:mktemp /tmp/file.XX

 -d: 创建为目录

wKioL1coaPDjDW0OAAHVydOmi5Y741.jpg

4.信号,脚本中能实现信号捕捉,但对9和15无法进行捕捉

 格式:kill -SIGNAL PID

 1: HUP  2: INT 9: KILL 15: TERM 19:SIGSTOP

       Ctrl+c: SIGINT    Ctrl+Z:SIGSTOP

 trap命令:trap '命令' 信号列表  

       代表跟踪信号并做出动作

       命令中可执行多条语句或用函数  

 Bash中一行执行多个语句,语句间用分号分隔

 4.1.编写ping IP地址如在线显示up,不在线显示down,按crtl+c中止ping脚本,如下:

#!/bin/bash

int() {                

  echo 'quiting!!!'

  exit 8

}

trap 'int' INT   用函数

for I in {1..20}; do

 if ping -c 1  -W1 1.1.1.$I &> /dev/null ; then

   echo "1.1.1.$I is up"

 else

   echo "1.1.1.$I is down"

 fi

done


4.2.编写ping IP地址如在线显示up,不在线显示down,按crtl+c中止ping脚本,如下:

#!/bin/bash

trap 'echo "Quiting";exit 1' INT   执行多条语句,用分号隔开

for I in {1..20}; do

 if ping -c 1  -W1 1.1.1.$I &> /dev/null ; then

   echo "1.1.1.$I is up"

 else

   echo "1.1.1.$I is down"

 fi

done