您好,登錄后才能下訂單哦!
這篇文章主要介紹了shell腳本編程在UNIX和Linux下有什么區(qū)別,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
與其他 UNIX 操作系統(tǒng)和 Linux 一樣,IBM? AIX? 操作系統(tǒng)提供了幾種能夠幫助系統(tǒng)管理員、開(kāi)發(fā)人員和用戶執(zhí)行日常任務(wù)的強(qiáng)大工具,使他們或其客戶的工作更輕松。在 UNIX 中,這些工具之一能夠通過(guò)編寫 shell 腳本編程來(lái)自動(dòng)執(zhí)行任務(wù),從而簡(jiǎn)化那些困難、漫長(zhǎng)或繁瑣的工作。
盡管在近兩年使用過(guò) UNIX 的一些人可能嘗試過(guò) shell 腳本編程,但是他們很可能只是研究操作系統(tǒng)的細(xì)節(jié),并不精通 shell 腳本編程。本文針對(duì)那些希望進(jìn)一步了解 shell 腳本編程,并開(kāi)始編寫更高級(jí)腳本的讀者。本文提供腳本編程的基礎(chǔ)知識(shí),包括如何簡(jiǎn)化腳本、如何盡可能保持腳本的靈活性、如何編寫干凈的腳本、在腳本內(nèi)編寫注釋以及調(diào)試腳本。
shell 腳本編程保持簡(jiǎn)單
在人們學(xué)習(xí)如何編寫 shell 腳本編程時(shí),常常遇到的一個(gè)問(wèn)題是,重復(fù)他們?cè)诹硪粋€(gè)腳本中已經(jīng)做過(guò)的工作。他們其實(shí)不需要復(fù)制原來(lái)的腳本并修改幾個(gè)硬編碼值,只需創(chuàng)建一個(gè)函數(shù)來(lái)處理兩個(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)化的腳本示例
#!/usr/bin/ksh if [[ $# -lt 2 ]] then echo "Usage: ${0##*/} <file name #1> <file name #2> exit 0 fi if [[ ! -f "${1}" ]] then echo "Unable to find file '${1}'" exit 1 fi if [[ ! -r "${1}" ]] then echo "Unable to read file '${1}'" exit 2 fi gzip ${1} ls -l ${1}.gz if [[ ! -f "${2}" ]] then echo "Unable to find file '${2}'" exit 1 fi if [[ ! -r "${2}" ]] then echo "Unable to read file '${2}'" exit 2 fi gzip ${2} ls -l ${2}.gz
這個(gè)腳本看起來(lái)很糟糕?。ㄖx天謝地,它只是一個(gè)示例)。這個(gè)shell 腳本編程應(yīng)該盡可能進(jìn)行濃縮。從便于閱讀的角度來(lái)看,清單 2 提供的版本更干凈。
清單 2. 對(duì)清單 1 腳本進(jìn)行濃縮的版本
#!/usr/bin/ksh exit_msg() { [[ $# -gt 1 ]] && echo "${0##*/} (${1}) - ${2}" exit ${1:-0} } [[ $# -lt 2 ]] && exit_msg 0 "Usage: ${0##*/} <file name #1> <file name #2> for _FNAME in $@ do [[ ! -f "${_FNAME}" ]] && exit_msg 1 "Unable to find file '${_FNAME}'" [[ ! -r "${_FNAME}" ]] && exit_msg 2 "Unable to read file '${_FNAME}'" gzip ${_FNAME} ls -l ${_FNAME}.gz done
注意到這兩者的差異了嗎?這個(gè)shell 腳本編程增加了一個(gè)簡(jiǎn)單的函數(shù)來(lái)顯示一個(gè)消息并帶適當(dāng)?shù)姆祷卮a退出,還把所有操作轉(zhuǎn)移到一個(gè) for 循環(huán)中,這使這個(gè)腳本看起來(lái)更干凈、更容易理解了。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“shell腳本編程在UNIX和Linux下有什么區(qū)別”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。