shell練習:svndiff & change_ip

來源:互聯網
上載者:User

在shell中寫代碼,有些命令比較常用,所以整合到一起來實現一些小功能,筆記一下:

第一個指令碼是用來對比SVN中的不同版本的不同,藉助了svn自身的命令列工具和vimdiff工具:

 

 

代碼


#!/bin/sh
#filename=date +%Y%m%d%H%M%S
filename=${1##*/}
if [ "$#" = 2 ];then
svn up ${1}
cp ${1} "/tmp/$filename"'.now'
svn up -r${2} ${1}
cp ${1} "/tmp/$filename"'.'"$2"
cp "/tmp/$filename"'.now' ${1}
vimdiff /tmp/${filename}.${2} /tmp/${filename}.now
exit 0
elif [ "$#" = 3 ];then
cp ${1} "/tmp/$filename"'.now'
svn up -r${2} ${1}
cp ${1} "/tmp/$filename"'.'"$2"
svn up -r${3} ${1}
cp ${1} "/tmp/$filename"'.'"$3"
cp "/tmp/$1"'.now' ${1}
vimdiff /tmp/${filename}.${2} /tmp/${filename}.${3}
exit 0
fi
echo "==========================================="
echo "Format: svndiff file version1 [version2]"
echo "eg: svndiff zyf.php 1923 1099"
echo "eg: svndiff zyf.php 1923"
echo "==========================================="

 

 

 

恩,這個指令碼支援兩種命令格式啦:
      svndiff zyf.php 1923 1099   #這是把SVN中的r1923和r1099對比
      svndiff zyf.php 1923    #這是把SVN庫中的r1923與最新版本對比

第二個指令碼是用來更改IP的網域名稱指向的,用來內網做一些測試工作:

 

代碼


#!/bin/sh
if [ "$1" = "163" ];then
echo "163 Go!"
elif [ "$1" = "162" ];then
echo "162 Go!"
elif [ "$1" = "0" ];then
echo "ok"
else
printf "Usage: {163|162|0|test1}\n"
fi

cat "$0" | sed -n '/^#no/p' | sed 's/^#no //' > /etc/hosts
cat "$0" | sed -n '/^#'"$1"'/p' | sed 's/^#'"$1"' //' >>/etc/hosts

#init
#no 127.0.0.1 localhost
#no 127.0.1.1 zyf-laptop
#no
#no # The following lines are desirable for IPv6 capable hosts
#no ::1 localhost ip6-localhost ip6-loopback
#no fe00::0 ip6-localnet
#no ff00::0 ip6-mcastprefix
#no ff02::1 ip6-allnodes
#no ff02::2 ip6-allrouters
#no ff02::3 ip6-allhosts

## quick switch begin
## tip 163測試環境
#163 192.168.1.163 www.zhangabc.com
## quick switch end

 

小摘抄:

SHELL參數介紹

如同ls 命令可以接受目錄等作為它的參數一樣,在shell編程時同樣可以使用參數。Shell有位置參數和內部參數。
1、 位置參數
由系統提供的參數稱為位置參數。位置參數的值可以用$N得到,N是一個數字,如果為1,即$1.類似C語言中的數組,Linux會把輸入的命令字串分段
並給每段進行標號,標號從0開始。第0號為程式名字,從1開始就表示傳遞給程式的參數。如$0表示程式的名字,$1表示傳遞給程式的第一個參數,以此類
推。
2、 內部參數
上述過程中的$0是一個內部變數,它是必須的,而$1則可有可無。和$0一樣的內部變數還有以下幾個。
    $# ----傳遞給程式的總的參數數目
    $? ----上一個代碼或者shell程式在shell中退出的情況,如果正常退出則返回0,反之為非0值。
    $* ----傳遞給程式的所有參數組成的字串。
    $n ----表示第幾個參數,$1 表示第一個參數,$2 表示第二個參數 ...
    $0 ----當前程式的名稱
    $@----以"參數1" "參數2" ... 形式儲存所有參數
    $$ ----本程式的(進程ID號)PID
    $! ----上一個命令的PID

主要是用來練習shell指令碼的基礎文法,呵呵。寫的一定非常的不規範,請有經驗的前輩指正,先謝謝啦。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.