天天看點

+++++++腳本練習之for循環和if語句使用

1、vim快捷方式

2、腳本實作建立腳本,自動生成事先定義的檔案

3、腳本中實作修改文本檔案。

4、/etc/rc.d/rc3.d目錄下分别有多個以K開頭和S開頭的檔案;分别讀取每個檔案, 以K開頭的檔案輸出為以檔案名加stop,以S開頭的檔案輸出為以檔案名加start.而輸出:

"K34filename stop"

"S66filename start"

1、兩個循環

2、單個循環

5、寫一個腳本探測172.16.250.0/24網絡内的線上狀态

6、顔色函數庫統一調用

ping指令

1

2

3

4

<code>ping</code> <code>[OPTIONS...] IP-ADDR</code>

<code>    </code><code>-c </code><code>#  ## ping的次數</code>

<code>    </code><code>-w  </code><code>#    ##  ping指令執行的時間</code>

<code>    </code><code>-W </code><code>#  ## 每Ping一次IP-ADDR的逾時時間</code>

使用示例

5

6

7

8

<code>root@izpo45bh60h6bsz ~]</code><code># ping -c 1 -w 1 127.0.0.1</code>

<code>PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.</code>

<code>64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 </code><code>time</code><code>=0.050 ms</code>

<code>--- 127.0.0.1 </code><code>ping</code> <code>statistics ---</code>

<code>1 packets transmitted, 1 received, 0% packet loss, </code><code>time</code> <code>0ms</code>

<code>rtt min</code><code>/avg/max/mdev</code> <code>= 0.050</code><code>/0</code><code>.050</code><code>/0</code><code>.050</code><code>/0</code><code>.000 ms</code>

<code>[root@izpo45bh60h6bsz ~]</code><code>#</code>

   如 果 你 要 重 複 鍵 入 一 個 短 語 或 一 個 句 子 , 也 有 一 種 快 捷 的 方法。Vim有一種記錄宏的機制。

   你鍵入"qa"開始把一段宏記錄入寄存器變量'a'中。按下來你可以象平常一樣鍵入你要的操作,隻是這些操作都會被Vim記錄進它命名為'a'的宏中,再次再下"q"鍵,就結束了宏'a'的錄制。

   當你要重複執行你剛才記錄的那些操作時隻要使用"@a"指令。共有26個可用的寄存器供你記錄宏。

   使用宏你可以重複多個不同的操作。而不僅僅是插入文本。如果你要進行某種重複的操作,記着要用這一招呀。

   使用宏要注意宏隻是機械地重複你剛才鍵入的動作,當你在檔案裡移動時要小心。你用宏重複時和你當初錄制時要操作的文本對象可能不一樣。你錄制宏時向右移4 個字元可能對它目前的環境來說是正常工作。但當你回放這些宏時,它工作的文本環境可能需要移動5個字元。當你要錄制的操作比較複雜時,要想一次就全部通過也不是一件容易的事,此時你可以寫一段宏或腳本。這對于使你的程式模闆化非常有用。比如,一個函數頭, 你可以把這項功能定制得如你所願的智能化

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

<code>#!/bin/bash</code>

<code># Version</code>

<code># Author</code>

<code># chkconfig: - 12 88</code>

<code># description:</code>

<code>DEBUG=0</code>

<code>if</code> <code>[ $</code><code># -lt 1 ]; then</code>

<code>  </code><code>echo</code> <code>"Usage: $0 &lt;dir&gt; or &lt;file&gt;"</code>

<code>  </code><code>exit</code> <code>1</code>

<code>fi</code>

<code>if</code> <code>[[ ! </code><code>"$1"</code> <code>=~ ^/ ]]; </code><code>then</code>

<code>if</code> <code>[ -d $1 ]; </code><code>then</code> 

<code>  </code><code>file</code><code>=$(</code><code>echo</code> <code>$1 | </code><code>sed</code> <code>'s,/$,,'</code><code>)</code>

<code>  </code><code>file</code><code>=$(mktemp -u $</code><code>file</code><code>/test</code><code>.XXXX)</code>

<code>elif</code> <code>[ -f $1 ]; </code><code>then</code>

<code>  </code><code>file</code><code>=$1</code>

<code>else</code>

<code>  </code><code>dir</code><code>=$(</code><code>dirname</code> <code>$1) </code>

<code>  </code><code>RETVAL=$?</code>

<code>  </code><code>[ $RETVAL -</code><code>eq</code> <code>0 ] &amp;&amp; [ ! -d $</code><code>dir</code> <code>] &amp;&amp; </code><code>install</code> <code>-d $</code><code>dir</code>

<code>cat</code> <code>&gt; $</code><code>file</code> <code>&lt;&lt; EOF</code>

<code># Version: $(/bin/date +%F_%T)</code>

<code>EOF</code>

<code>echo</code>

<code>echo</code> <code>-e </code><code>"\033[32m$file\033[0m"</code>

<code>附加:</code>

<code>1、判斷腳本的文法問題</code>

<code># bash -n touchsc</code>

<code>2、給予執行權限</code>

<code># chmod +x touchsc</code>

<code>3、重命名為touchsc,放入PATH定義的路徑中</code>

<code># mv touchsc /bin</code>

<code>4、生成配置檔案</code>

<code>echo</code> <code>"NUMBER=0"</code> <code>&gt; </code><code>/root/</code><code>.config_release_number</code>

3、腳本中實作修改文本檔案

<code>1、建立臨時檔案</code>

<code>2、将修改的結果儲存至臨時檔案</code>

<code>3、非互動将臨時檔案的内容覆寫至原檔案</code>

<code>4、非互動将原檔案删除</code>

<code>5、銷毀變量</code>

<code>if</code> <code>[ -f </code><code>/etc/shells</code> <code>]; </code><code>then</code>   <code>## 判斷檔案是否存在,存在則修改。不存在,則不修改。</code>

<code>  </code><code>tempFile=$(mktemp -u --tmpdir=</code><code>/tmp</code> <code>.zshrpmXXXXX)  </code><code>## 生成臨時檔案名</code>

<code>  </code><code>##先将修改的結果儲存至臨時檔案中</code>

<code>  </code><code>sed</code> <code>'s@^/bin/zsh$@@g'</code> <code>/etc/shells</code> <code>&gt; $tempFile 或 </code><code>grep</code> <code>-</code><code>v</code> <code>'^/bin/zsh$'</code> <code>/etc/shells</code> <code>&gt; $tempFile</code>

<code>  </code><code>##非互動,cp在centos中有别名</code>

<code>  </code><code>\</code><code>cp</code> <code>$tempFile </code><code>/etc/shells</code>

<code>  </code><code>##rm有别名,但可以強制删除</code>

<code>  </code><code>rm</code> <code>-f $tempFile</code>

<code>[root@izpo45bh60h6bsz scripts]</code><code># cd /scripts</code>

<code>[root@izpo45bh60h6bsz scripts]</code><code># pwd</code>

<code>/scripts</code>

<code>[root@izpo45bh60h6bsz scripts]</code><code># touchsc</code>

<code>Enter a script pathname[default: working directory]: how</code>

<code>script pathname: </code><code>/scripts/how</code><code>.sh</code>

<code>[root@izpo45bh60h6bsz scripts]</code><code># cat how.sh</code>

<code># Version: 0.0.10</code>

<code># Author: Lcc.org</code>

<code># Description:..</code>

<code>for</code> <code>i </code><code>in</code> <code>/etc/rc</code><code>.d</code><code>/rc3</code><code>.d</code><code>/K</code><code>*; </code><code>do</code>

<code>  </code> 

<code>  </code><code>echo</code> <code>"$(basename $i) stop"</code>

<code>done</code>

<code>for</code> <code>i </code><code>in</code> <code>/etc/rc</code><code>.d</code><code>/rc3</code><code>.d</code><code>/S</code><code>*; </code><code>do</code>

<code>  </code><code>echo</code> <code>"$(basename $i) start"</code>

<code># Version: 0.0.11</code>

<code># Description: small toys</code>

<code>for</code> <code>i </code><code>in</code> <code>/etc/rc</code><code>.d</code><code>/rc3</code><code>.d/*; </code><code>do</code>

<code>  </code><code>i=$(</code><code>basename</code> <code>$i)</code>

<code>  </code><code>if</code> <code>[[ </code><code>"$i"</code> <code>=~ S ]]; </code><code>then</code>

<code>      </code><code>echo</code> <code>"$i start"</code>

<code>  </code><code>elif</code> <code>[[ </code><code>"$i"</code> <code>=~ K ]]; </code><code>then</code>

<code>    </code><code>echo</code> <code>"$i stop"</code>

<code>  </code><code>else</code>

<code>    </code><code>echo</code> <code>"...."</code>

<code>  </code><code>fi</code>

<code># Version: 0.0.12</code>

<code># Description: Small toys</code>

<code>IP=172.16.250.</code>

<code>uphosts=0</code>

<code>downhosts=0</code>

<code>declare</code> <code>-i IP uphosts downhosts</code>

<code>for</code> <code>i </code><code>in</code> <code>$(</code><code>seq</code> <code>254); </code><code>do</code>

<code>  </code><code>ping</code> <code>-c 1 -w 1 ${IP}$i &amp;&gt; </code><code>/dev/null</code> <code>2&gt;&amp;1</code>

<code>  </code><code>retval=$?</code>

<code>  </code><code>[ $retval -</code><code>eq</code> <code>0 ] &amp;&amp; </code><code>echo</code> <code>"${IP}$i online"</code> <code>&amp;&amp; </code><code>let</code> <code>uphosts=$uphosts+1 </code>

<code>  </code><code>[ $retval -</code><code>ne</code> <code>0 ] &amp;&amp; </code><code>echo</code> <code>"${IP}$i is down"</code> <code>&amp;&amp; </code><code>let</code> <code>downhosts=$downhosts+1</code>

<code>echo</code> <code>"uphosts: $uphosts"</code>

<code>echo</code> <code>"downhosts: $downhosts"</code>

<code>Blank=</code><code>'\033[1;30m'</code>

<code>Red=</code><code>'\033[1;31m'</code>

<code>Green=</code><code>'\033[1;32m'</code>

<code>Yellow=</code><code>'\033[1;33m'</code>

<code>Blue=</code><code>'\033[1;34m'</code>

<code>Fen=</code><code>'\033[1;35m'</code>

<code>Qin=</code><code>'\033[1;36m'</code>

<code>Comm=</code><code>'\033[0m'</code>

<code>_general_Blank() {</code>

<code>  </code><code>echo -e </code><code>"${Blank}${1}${Comm}"</code>

<code>}</code>

<code>_general_Red() {</code>

<code>  </code><code>echo -e </code><code>"${Red}${1}${Comm}"</code>

<code>_general_Green() {</code>

<code>  </code><code>echo -e </code><code>"${Green}${1}${Comm}"</code>

<code>_general_Yellow() {</code>

<code>  </code><code>echo -e </code><code>"${Yellow}${1}${Comm}"</code>

<code>_general_Blue() {</code>

<code>  </code><code>echo -e </code><code>"${Blue}${1}${Comm}"</code>

<code>_general_Fen() {</code>

<code>  </code><code>echo -e </code><code>"${Fen}${1}${Comm}"</code>

<code>_general_Qin() {</code>

<code>  </code><code>echo -e </code><code>"${Qin}${1}${Comm}"</code>

<code></code>

本文轉自 lccnx 51CTO部落格,原文連結:http://blog.51cto.com/sonlich/1955986,如需轉載請自行聯系原作者