溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

shell腳本編程在UNIX和Linux下有什么區(qū)別

發(fā)布時(shí)間:2021-10-27 11:57:55 來(lái)源:億速云 閱讀:221 作者:小新 欄目:系統(tǒng)運(yùn)維

這篇文章主要介紹了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í)!

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI