自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

學(xué)習(xí)Unix操作系統(tǒng)外殼腳本

系統(tǒng) 其他OS
在Unix操作系統(tǒng)中,我們要學(xué)會使用外殼腳本的方式操作Unix操作系統(tǒng)命令,識別并提取出可能的參數(shù)以后,您所需做的就是構(gòu)建新的選項(xiàng)來提供給最終要使用的命令。

經(jīng)過長時間的學(xué)習(xí)Unix操作系統(tǒng)的知識,這次我們來介紹關(guān)于使用外殼腳本的知識。它是典型Unix操作系統(tǒng)管理員使用命令解決的方案之一。當(dāng)您要構(gòu)建的包裝特別復(fù)雜時,更好的解決方案是使用外殼腳本,您可以代替原始命令調(diào)用這些腳本。使用外殼腳本,您可以更創(chuàng)造性地處理替代,甚至為另一個命令提供完全由外殼腳本驅(qū)動的替代。

使用外殼腳本的方式操作Unix操作系統(tǒng)命令

構(gòu)建一致環(huán)境的最容易和最兼容的方法,是創(chuàng)建可用作實(shí)際命令的包裝的外殼腳本,這樣考慮了您希望支持的各種選項(xiàng)和設(shè)置。例如,Unix操作系統(tǒng)useradd 和 adduser 命令在設(shè)置參數(shù)(如用戶 ID 或組成員資格)時支持同樣的單字母命令行選項(xiàng),因此 Linux 上的 $ adduser -u 1000 -G sales,marketing mcbrown 等效于 Solaris 上的 $ useradd -u 1000 -G sales,marketing mcbrown。

然而,Linux 版本還支持?jǐn)U展命令選項(xiàng),例如,--uid 和 --groups 等效于上面的命令行選項(xiàng)。這些擴(kuò)展選項(xiàng)在 Solaris 上不受支持,但是,如果創(chuàng)建一個名為 adduser 的外殼腳本,您就可以模擬 Linux 版本,然后用適當(dāng)?shù)倪x項(xiàng)運(yùn)行實(shí)際的 Solaris useradd 命令。

例如,在Unix操作系統(tǒng)中用作 adduser 或 useradd 命令的包裝的示例外殼腳本。

 

  1. #!/bin/bash  
  2. # -*- shell-script -*-   
  3. for i in $*  
  4. do  
  5. case $i in  
  6. --uid|-u) OPT_UID=$2; shift 2;;  
  7. --groups|-G) OPT_GROUPS=$2; shift 2;;  
  8. --gid|-g) OPT_GROUP=$2; shift 2;;  
  9. --home-dir|-d) OPT_HOMEDIR=$2; shift 2;;  
  10. --shell|-s) OPT_SHELL=$2;shift 2;;  
  11. --non-unique|-o) OPT_NONUNIQUE=1;shift 2;;  
  12. --comment|-c) OPT_COMMENT=$2;shift 2;;  
  13. esac  
  14. done  
  15. OPTS="" 
  16. if [ -n "$OPT_$HOMEDIR" ]  
  17. then  
  18. OPTS="$OPTS -d $OPT_HOMEDIR" 
  19. fi  
  20. if [ -n "$GROUP" ]thenOPTS="$OPTS -g $OPT_GROUP" 
  21. fi  
  22. if [ -n "$OPT_GROUPS" ]  
  23. then  
  24. OPTS="$OPTS -G $OPT_GROUPS" 
  25. fi  
  26. if [ -n "$OPT_SHELL" ]thenOPTS="$OPTS -s $OPT_SHELL" 
  27. fi  
  28. if [ -n "$OPT_UID" ]  
  29. then  
  30. OPTS="$OPTS -u $OPT_UID" 
  31. fi  
  32. if [ -n "$OPT_COMMENT" ]  
  33. then  
  34. OPTS="$OPTS -c \"$OPT_COMMENT\""  
  35. fi  
  36. if [ -n "$OPT_NOUNIQUE" ]  
  37. then  
  38. OPTS="$OPTS -o" 
  39. fi  
  40. CMD=adduser 
  41. UNAME=`uname`  
  42. case $UNAME in  
  43. Solaris) CMD=useradd;break;;  
  44. esac  
  45. $CMD $OPTS $*  


以上的腳本的關(guān)鍵是 foreach 循環(huán),它遍歷所提供的命令行參數(shù)(在 $* 中提供)。對于每個選項(xiàng),case 語句會嘗試識別該選項(xiàng)——使用短格式或長格式并設(shè)置一個變量。Unix操作系統(tǒng)命令行開關(guān)為 $1。如果該選項(xiàng)后面正常地跟著一個值(例如,用戶 ID),您可以將 $2 當(dāng)作該值來進(jìn)行訪問,并使用它將該值賦于某個變量。

識別出某個選項(xiàng)后,shift 語句從 $* 變量列表中移動一個位置(若指定了數(shù)字,則移動指定數(shù)目的位置),以便已經(jīng)識別出的命令行參數(shù)在循環(huán)的下一次迭代中不再在 $* 變量中。

識別并提取出可能的參數(shù)以后,您所需做的就是構(gòu)建新的選項(xiàng)來提供給最終要使用的命令。由于useradd/adduser 都支持短格式的參數(shù),所以可在此基礎(chǔ)上構(gòu)建新的命令選項(xiàng)字符串。這是通過檢查對應(yīng)的變量是否已設(shè)置并將該選項(xiàng)添加到命令行來實(shí)現(xiàn)的。請注意雙引號的使用,它確保了原始命令中引用的參數(shù)被保留并得到正確識別。

通過在Unix操作系統(tǒng)使用命令行工具和外殼流控制(如 if 或case)的組合,您可以使用單個源來選擇各種要使用的選項(xiàng)。有兩個工具在這種情況下很有用:一個工具識別主機(jī)(如 hostname 或 uname),另一個工具識別平臺 (uname)。 uname 產(chǎn)生的缺省輸出是基本操作系統(tǒng)名稱,如 Linux 或Solaris。

例如,可以按照前一部分中的ps 示例,將該命令與case 語句結(jié)合使用以選擇正確的別名,uname 的輸出,例如 UNAME='uname'
 

  1. case "$UNAME" in  
  2. FreeBSD|NetBSD|Darwin)  
  3. alias ps='ps -o pid,ppid,command' 
  4. break  
  5. ;;  
  6. Solaris|Linux)   
  7. alias ps='ps -o pid,ppid,cmd' 
  8. break  
  9. ;;  
  10. esac 


也可以在腳本中使用同樣的基本過程來選擇特定的序列。這次,我們就介紹完了關(guān)于Unix操作系統(tǒng)外殼腳本的知識。

【編輯推薦】

  1. 解析Unix操作系統(tǒng)變種SCO UnixWare
  2. 10個程序來考驗(yàn)Unix操作系統(tǒng)
  3. 變成Unix操作系統(tǒng)高手
  4. 快速學(xué)習(xí)Unix操作系統(tǒng)
  5. 關(guān)于Unix操作系統(tǒng)問題
責(zé)任編輯:小霞
相關(guān)推薦

2010-04-09 14:47:55

Unix操作系統(tǒng)

2010-04-30 17:53:29

2010-04-09 11:24:38

Unix操作系統(tǒng)

2010-04-16 17:19:58

Unix操作系統(tǒng)

2010-04-16 14:46:22

2010-04-20 17:11:33

Unix操作系統(tǒng)

2010-04-16 18:19:32

Unix操作系統(tǒng)

2010-04-15 13:02:41

Unix操作系統(tǒng)

2010-04-16 10:51:09

2010-05-06 17:59:50

Unix命令

2010-04-30 17:27:59

Unix操作系統(tǒng)

2010-04-16 14:05:07

Unix操作系統(tǒng)

2010-04-13 12:27:44

Unix操作系統(tǒng)

2010-04-08 16:49:36

Unix操作系統(tǒng)

2010-04-15 14:40:26

Unix操作系統(tǒng)

2010-04-15 13:36:07

Unix操作系統(tǒng)

2010-04-09 17:16:04

Unix操作系統(tǒng)

2010-04-19 10:30:27

Unix操作系統(tǒng)

2010-04-08 16:18:22

Unix操作系統(tǒng)工具

2010-04-19 18:18:30

Unix操作系統(tǒng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號