Shell脚本是我们运维人员管理的最基础知识,下面就是我在学习过程中的一些小例子(比起大牛来说)。写这篇博客的目的,是为了记录自己学习脚本的历程,也是为了能和读者一起探讨学习。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
# Example1: 自动创建脚本的模板 脚本名:creat_scripts.sh
# 功能描述:creat_scripts.sh SCRIPTS_NAME 如果创建的脚本名文件不存在,则创建成脚本文件;
# 如果对应的文件存在,且为脚本文件,则打开文件到最后一行;
# 如果对应的文件存在,但不是脚本文件,则提示退出。
#!/bin/bash
# Description: create a script model
# Version: 0.0.1
# Author: Alex
# Date: 2014-07-09
# 判断参数问题
if
[ $
# -lt 1 ];then
echo
"Usage: `basename $0` SCRPIPT_NAME."
exit
2
fi
if
[ ! -e
"$1"
];
then
/bin/touch
"$1"
cat
>
"$1"
<<EOF
#!/bin/bash
# description:
# version:
# date:
# author: Alex
# license: GPL
EOF
vim +
"$1"
# 这里判断脚本是否正常退出的办法是,判断是否存在 .SCRIPTS_NAME.swp隐藏文件
if
[ ! -e
"`/usr/bin/dirname $1`.$1.swp"
];
then
[ ! -x $1 ] &&
/bin/chmod
+x
"$1"
bash
-n $1 &>
/dev/null
result=$?
[ $result -
ne
0 ] &&
echo
"$(bash -n $1)"
fi
else
[[ `
/usr/bin/file
"$1"
` =~ Bourne-Again\ shell\ script\ text\ executable$ ]] \
&& vim +
"$1"
||
echo
"This is not scripts."
&&
exit
2
if
[ ! -e
"`/usr/bin/dirname $1`.$1.swp"
];
then
[ ! -x $1 ] &&
/bin/chmod
+x
"$1"
bash
-n $1 &>
/dev/null
result=$?
[ $result -
ne
0 ] &&
echo
"$(bash -n $1)"
fi
fi
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
# Example2:判读一个IP v4地址是否为A,B,C类地址,如果是则打印出默认掩码
# 此脚本是通过Example1的脚本创建出来的
#!/bin/bash
# description:
# version:0.0.0
# date:2014-07-16
# author: Alex
# license: GPL
# 下面是IP地址十进制表示是,四位的正则表达式
fistip=
"[1-9]|[1-9][0-9]|11[0-9]|12[1-68-9]|1[3-9][0-9]|2[0-1][0-9]|22[0-3]"
secondip=
"[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]"
thirdip=
"[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]"
fourip=
"[1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4]"
read
-p
"Please input ip addr:"
ip_addr
while
true
;
do
# 等价于 while : ;do
if
echo
"$ip_addr"
|
grep
-E
"^\<($fistip)\>\.\<($secondip)\>\.\<($thirdip)\>\.\<($fourip)\>$"
&>
/dev/null
;
then
# 下面的这一句和上面应该有相同功能,但实际上不是,笔者正在研究
#if [[ "$ip_addr" =~ ^\<\($fistip\)\>\.\<\($secondip\)\>\.\<\($thirdip\)\>\.\<\($fourip\)\>$ ]];then
ifconfig
eth0 $ip_addr &>
/dev/null
head_ip=`
echo
"$ip_addr"
|
cut
-d. -f1`
if
[ $head_ip -
ge
1 -a $head_ip -
le
126 ];
then
echo
"$ip_addr mask is 255.0.0.0"
elif
[ $head_ip -
ge
128 -a $head_ip -
le
191 ];
then
echo
"$ip_addr mask is 255.255.0.0"
elif
[ $head_ip -
ge
192 -a $head_ip -
le
223 ];
then
echo
"$ip_addr mask is 255.255.255.0"
fi
exit
3
else
read
-p
"Please again input ip addr:"
ip_addr
fi
done
|
以后会不定期更新.....
本文转自 羊木狼 51CTO博客,原文链接:http://blog.51cto.com/guoting/1439695,如需转载请自行联系原作者