標籤:指令碼
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 2fiif [ ! -e "$1" ];then/bin/touch "$1"cat > "$1" <<EOF#!/bin/bash# description:# version:# date:# author: Alex# license: GPLEOFvim + "$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)" fielse[[ `/usr/bin/file "$1"` =~ Bourne-Again\ shell\ script\ text\ executable$ ]] && vim + "$1" || echo "This is not scripts." && exit 2if [ ! -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)" fifi
# Example2:判讀一個IP v4地址是否為A,B,C類地址,如果是則列印出預設掩碼# 此指令碼是通過Example1的指令碼建立出來的#!/bin/bash# description:# version:0.0.0# date:2014-07-16# author: Alex# license: GPL# 下面是IP地址十進位表示是,四位的Regexfistip="[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_addrwhile true ;do # 等價於 while : ;doif echo "$ip_addr" | grep -E "^\<($fistip)\>\.\<($secondip)\>\.\<($thirdip)\>\.\<($fourip)\>$" &>/dev/null;then# 下面的這一句和上面應該有相同功能,但實際上不是,筆者正在研究#if [[ "$ip_addr" =~ ^\<\($fistip\)\>\.\<\($secondip\)\>\.\<\($thirdip\)\>\.\<\($fourip\)\>$ ]];thenifconfig eth0 $ip_addr &>/dev/nullhead_ip=`echo "$ip_addr" | cut -d. -f1`if [ $head_ip -ge 1 -a $head_ip -le 126 ];thenecho "$ip_addr mask is 255.0.0.0"elif [ $head_ip -ge 128 -a $head_ip -le 191 ];thenecho "$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"fiexit 3elseread -p "Please again input ip addr:" ip_addrfidone
以後會不定期更新.....
本文出自 “逆水寒” 部落格,轉載請與作者聯絡!