Linux Shell脚本例子
Shell脚本是我们运维人员管理的最基础知识,下面就是我在学习过程中的一些小例子(比起大牛来说)。写这篇博客的目的,是为了记录自己学习脚本的历程,也是为了能和读者一起探讨学习。
# 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
# 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
以后会不定期更新.....
本文出自 “逆水寒” 博客,转载请与作者联系!
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。