您的位置:首页 > 运维架构 > Shell

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

2016-05-03 17:18 525 查看
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:执行脚本显示结果如下:



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




3.命令mktemp创建临时文件或目录
格式:mktemp /tmp/file.XX
-d: 创建为目录



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

本文出自 “夏维柳” 博客,请务必保留此出处http://willow.blog.51cto.com/6574604/1769791
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: