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

shell 腳本編程在UNIX和Linux下的不同表現(xiàn)

系統(tǒng) Linux
shell 腳本編程需要我們不斷的學(xué)習(xí),有關(guān)的問題一直在存在。下面我們就看看如何才能更好的使相關(guān)的問題到解決,希望大家有所解決。

shell 腳本編程如何才能更好的使用呢?尤其是在UNIX操作系統(tǒng)和Linux操作系統(tǒng)中的使用。接下來我們就看看有關(guān)shell 腳本編程的相關(guān)使用問題。

與其他 UNIX 操作系統(tǒng)和 Linux 一樣,IBM? AIX? 操作系統(tǒng)提供了幾種能夠幫助系統(tǒng)管理員、開發(fā)人員和用戶執(zhí)行日常任務(wù)的強(qiáng)大工具,使他們或其客戶的工作更輕松。在 UNIX 中,這些工具之一能夠通過編寫 shell 腳本編程來自動(dòng)執(zhí)行任務(wù),從而簡(jiǎn)化那些困難、漫長(zhǎng)或繁瑣的工作。

盡管在近兩年使用過 UNIX 的一些人可能嘗試過 shell 腳本編程,但是他們很可能只是研究操作系統(tǒng)的細(xì)節(jié),并不精通 shell 腳本編程。本文針對(duì)那些希望進(jìn)一步了解 shell 腳本編程,并開始編寫更高級(jí)腳本的讀者。本文提供腳本編程的基礎(chǔ)知識(shí),包括如何簡(jiǎn)化腳本、如何盡可能保持腳本的靈活性、如何編寫干凈的腳本、在腳本內(nèi)編寫注釋以及調(diào)試腳本。

shell 腳本編程保持簡(jiǎn)單

在人們學(xué)習(xí)如何編寫 shell 腳本編程時(shí),常常遇到的一個(gè)問題是,重復(fù)他們?cè)诹硪粋€(gè)腳本中已經(jīng)做過的工作。他們其實(shí)不需要復(fù)制原來的腳本并修改幾個(gè)硬編碼值,只需創(chuàng)建一個(gè)函數(shù)來處理兩個(gè)腳本的重復(fù)部分。創(chuàng)建集中的函數(shù)還可以促進(jìn)標(biāo)準(zhǔn)化,幫助創(chuàng)建統(tǒng)一的腳本。如果一個(gè)函數(shù)在腳本的一個(gè)部分工作正常,那么它在腳本中的其他地方也會(huì)正常工作。

例如,清單 1 所示的腳本應(yīng)該濃縮和簡(jiǎn)化為更簡(jiǎn)單、更干凈的程序。

清單 1. 可以簡(jiǎn)化的腳本示例

 

  1. #!/usr/bin/ksh  
  2. if [[ $# -lt 2 ]]  
  3. then  
  4. echo "Usage: ${0##*/} <file name #1> <file name #2> 
  5. exit 0  
  6. fi  
  7. if [[ ! -f "${1}" ]]  
  8. then  
  9. echo "Unable to find file '${1}'"  
  10. exit 1  
  11. fi  
  12. if [[ ! -r "${1}" ]]  
  13. then  
  14. echo "Unable to read file '${1}'"  
  15. exit 2  
  16. fi  
  17. gzip ${1}  
  18. ls -l ${1}.gz  
  19. if [[ ! -f "${2}" ]]  
  20. then  
  21. echo "Unable to find file '${2}'"  
  22. exit 1  
  23. fi  
  24. if [[ ! -r "${2}" ]]  
  25. then  
  26. echo "Unable to read file '${2}'"  
  27. exit 2  
  28. fi  
  29. gzip ${2}  
  30. ls -l ${2}.gz 

這個(gè)腳本看起來很糟糕?。ㄖx天謝地,它只是一個(gè)示例)。這個(gè)shell 腳本編程應(yīng)該盡可能進(jìn)行濃縮。從便于閱讀的角度來看,清單 2 提供的版本更干凈。

清單 2. 對(duì)清單 1 腳本進(jìn)行濃縮的版本

 

  1. #!/usr/bin/ksh  
  2. exit_msg() {  
  3. [[ $# -gt 1 ]] && echo "${0##*/} (${1}) - ${2}"  
  4. exit ${1:-0}  
  5. }  
  6. [[ $# -lt 2 ]] && exit_msg 0 "Usage: ${0##*/} <file name #1> <file name #2> 
  7. for _FNAME in $@  
  8. do  
  9. [[ ! -f "${_FNAME}" ]] && exit_msg 1 "Unable to find file '${_FNAME}'"  
  10. [[ ! -r "${_FNAME}" ]] && exit_msg 2 "Unable to read file '${_FNAME}'"  
  11. gzip ${_FNAME}  
  12. ls -l ${_FNAME}.gz  
  13. done 

注意到這兩者的差異了嗎?這個(gè)shell 腳本編程增加了一個(gè)簡(jiǎn)單的函數(shù)來顯示一個(gè)消息并帶適當(dāng)?shù)姆祷卮a退出,還把所有操作轉(zhuǎn)移到一個(gè) for 循環(huán)中,這使這個(gè)腳本看起來更干凈、更容易理解了。

【編輯推薦】

  1. linux學(xué)習(xí)筆記:認(rèn)識(shí)SHELL
  2. Linux下反彈CmdLine Shell小技巧
  3. 最全的Webshell提權(quán)方法總結(jié)
  4. ASP.NET環(huán)境下的Shell函數(shù)
  5. 實(shí)戰(zhàn)Windows7系統(tǒng)的Powershell命令
責(zé)任編輯:張浩 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2018-04-04 08:59:22

LinuxUNIXShell

2024-11-27 09:19:25

2010-08-17 15:21:17

IEFirefoxHTML

2014-03-13 16:34:04

LinuxBashKSH shel

2010-06-30 10:16:49

SNMP協(xié)議

2018-02-01 17:32:30

LinuxUNIXBash Shell

2009-09-29 10:45:17

UnixLinuxshell

2009-10-23 13:44:03

linux Shell

2011-09-27 13:52:41

2010-04-16 14:46:22

2010-06-23 15:55:36

Linux Bash

2010-07-01 12:36:00

2018-08-02 10:10:38

LinuxUnix

2011-07-26 09:48:47

Shell快捷鍵grepinit

2009-08-30 15:12:34

ODULinuxUnix平臺(tái)

2009-12-25 09:55:18

LinuxShell編程Shell基本語法

2020-10-21 11:55:44

Shell編程語言Linux

2011-07-12 15:21:51

POSIX規(guī)范Linux

2020-12-07 10:30:39

LinuxUnix物聯(lián)網(wǎng)

2016-10-31 08:35:20

LinuxUnix
點(diǎn)贊
收藏

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