[ 永遠的UNIX::UNIX技術資料的寶庫 ]   GB | BIG5

首頁 > 編程技術 > Shell > 正文
Linux程式設計-11.Shell Script(bash)--(5)控制圈for
http://www.openchess.org/noitatsko/programming/ (2001-05-25 12:10:00)

示了幾個簡單的Shell Script,相信您應該對Shell Script有點概念了。現在我們開始來仔細研究一些較高等的Shell Script寫作。一些進一步的說明,例如"$"、">"、"<"、">>"、"1>"、"2>"符號的使用,會在稍後解釋。 

--------------------------------------------------------------------------------

for name [ in word; ] do list ; done
控制圈。 
word是一序列的字,for會將word中的個別字展開,然後設定到name上面。list是一序列的工作。如果[in word;]省略掉,那麼name將會被設定為Script後面所加的參數。 



--------------------------------------------------------------------------------

例一: 
#!/bin/sh 

for i in a b c d e f ; do 
    echo $i 
done 

它將會顯示出a到f。 



--------------------------------------------------------------------------------

例二: 另一種用法,A-Z
#!/bin/sh 
WORD="a b c d e f g h i j l m n o p q r s t u v w x y z" 

for i in $WORD ; do 
  echo $i 
done 

這個Script將會顯示a到z。 



--------------------------------------------------------------------------------

例三 : 修改副檔名
如果您有許多的.txt檔想要改名成.doc檔,您不需要一個一個來。 
#!/bin/sh 

FILES=`ls /txt/*.txt` 

for txt in $FILES ; do 
  doc=`echo $txt | sed "s/.txt/.doc/"` 
  mv $txt $doc 
done 

這樣可以將*.txt檔修改成*.doc檔。 



--------------------------------------------------------------------------------

例四 : meow
#!/bin/sh 
# Filename : meow 
for i ; do 
    cat $i 
done 

當您輸入"meow file1 file2 ..."時,其作用就跟"cat file1 file2 ..."一樣。 



--------------------------------------------------------------------------------

例五 : listbin 
#!/bin/sh 
# Filename : listbin 

for i in /bin/* ; do 
    echo $i 
done 

當您輸入"listbin"時,其作用就跟"ls /bin/*"一樣。 



--------------------------------------------------------------------------------

例六 : /etc/rc.d/rc 
拿一個實際的例來說,Red Hat的/etc/rc.d/rc的啟動程式中的一個片斷。 

for i in /etc/rc.d/rc$runlevel.d/S*; do 
    # Check if the script is there. 
    [ ! -f $i ] && continue 

    # Check if the subsystem is already up. 
    subsys=${i#/etc/rc.d/rc$runlevel.d/S??} 
    [ -f /var/lock/subsys/$subsys ] || \ 
    [ -f /var/lock/subsys/${subsys}.init ] && continue 

    # Bring the subsystem up. 
     $i start 
done 

這個例中,它找出/etc/rc.d/rcX.d/S*所有檔案,檢查它是否存在,然後一一執行。 
(http://www.fanqiang.com)
    進入【UNIX論壇

相關文章
Linux程式設計-31.工作群資訊管理(grp) (2001-05-27 22:08:00)
Linux程式設計-30.使用者資訊管理(pwd) (2001-05-27 21:04:00)
Linux程式設計-29.時間處理 (2001-05-27 20:10:01)
Linux程式設計-28.GNU Make (2001-05-27 19:00:00)
Linux程式設計-27.GNU Debugger (2001-05-27 18:08:01)
Linux程式設計-26.PIPE (2001-05-27 17:04:00)
Linux程式設計-25.Message Queues (2001-05-27 16:10:00)
Linux程式設計-24.Semaphores (2001-05-27 15:00:00)
Linux程式設計-23.共享記憶體(Shared Memory) (2001-05-27 14:08:00)
Linux程式設計-20.getopt (2001-05-27 13:04:00)

===更多相關===
 

★  樊強制作 歡迎分享  ★