• shell腳本

    編輯
    本詞條由“匿名用戶” 建檔。

    什么是shell腳本

    編輯

    shell腳本是一種計算機程序,旨在由Unixshell(一種命令行解釋器)運行。shell腳本的各種方言被認為是腳本語言。shell腳本執行的典型操作包括文件操作、程序執行和打印文本。設置環境、運行程序并執行任何必要的清理或日志記錄的腳本稱為wrapper。

    該術語也更普遍地用于表示運行操作系統外殼的自動化模式。每個操作系統都為這些功能使用一個特定的名稱,包括批處理文件(MSDos-Win95流,OS/2)、命令過程(VMS)和shell腳本(WindowsNT流和第三方衍生產品,如4NT——文章位于cmd。exe),與大型機操作系統相關聯的術語很多。

    生命周期

    編輯

    Shell腳本通常用作軟件開發的初始階段,并且通常會在以后轉換為不同的底層實現,最常見的是轉換為Perl、Python或C。解釋器指令允許實現細節完全隱藏在腳本中,而不是作為文件擴展名公開,并提供不同語言的無縫重新實現,而不影響最終用戶

    雖然帶有“.sh”文件擴展名的文件通常是某種shell腳本,但大多數shell腳本沒有任何文件擴展名。

    shell腳本優點和缺點

    編輯

    編寫shell腳本的xxx優點可能是命令和語法與在命令行中直接輸入的完全一樣。程序員不必切換到完全不同的語法,如果腳本是用不同的語言編寫的,或者使用編譯的語言,他們就會這樣做。

    通常,編寫shell腳本比用其他編程語言編寫等效代碼要快得多。許多優點包括簡單的程序或文件選擇、快速啟動和交互式調試。shell腳本可用于提供圍繞現有程序的排序和決策鏈接,對于中等大小的腳本,沒有編譯步驟是一個優勢。解釋性運行使將調試代碼寫入腳本并重新運行以檢測和修復錯誤變得容易。非專家用戶可以使用腳本來定制程序的行為,而shell腳本為多處理提供了一些有限的范圍。

    另一方面,shell腳本容易出現代價高昂的錯誤。諸如rm-rf*/(而不是預期的rm-rf*/)之類的無意輸入錯誤是Unix社區的民間傳說;一個額外的空格將命令從刪除當前目錄中包含的所有子目錄的命令轉換為刪除文件系統根目錄中所有內容的命令。類似的問題可以將cp和mv變成危險的武器,濫用>重定向可以刪除文件的內容。由于許多UNIX命令的名稱只有一個字母不同,這使得問題更加嚴重:cp、cd、dd,df等

    另一個顯著的缺點是執行速度慢,并且需要為幾乎每個執行的shell命令啟動一個新進程。當一個腳本的工作可以通過設置一個管道來完成時,高效的過濾器命令在其中執行大部分工作,減速就會得到緩解,但復雜的腳本通常比執行等效任務的傳統編譯程序慢幾個數量級。

    不同平臺之間也存在兼容性問題。Perl的創建者LarryWall有一句名言:“移植shell比移植shell腳本更容易”。

    同樣,更復雜的腳本可能會遇到shell腳本語言本身的限制;這些限制使得編寫高質量的代碼變得困難,并且各種shell的擴展以改善原始shell語言的問題可能會使問題變得更糟。

    使用某些腳本語言的許多缺點是由語言語法或實現中的設計缺陷造成的,不一定是使用基于文本的命令行強加的;有許多shell使用其他shell編程語言,甚至是成熟的語言,如Scsh(使用Scheme)。

    其他操作系統上的Shell腳本

    編輯

    互操作性軟件,例如Cygwin、MKSToolkit、Interix(在MicrosoftWindowsServicesforUNIX中可用)、HamiltonCshell、UWIN(AT&TUnixforWindows)等允許Unixshell程序在運行WindowsNT和它的繼任者,在MS-DOS-Windows95分支以及OS/2的早期MKSToolkit版本上失去了一些功能。至少三個適用于Windows類型操作系統的DCL實現——除了XLNT,一種與命令外殼、Windows腳本宿主和CGI一起使用的多用途腳本語言包編程——也可用于這些系統。MacOSX及后續版本也類似于Unix。

    shell腳本

    除了上述工具之外,一些POSIX和OS/2功能也可以與WindowsNT操作系統系列(直至Windows2000)的相應環境子系統一起使用。第三個16位子系統通常稱為MS-DOS子系統,它使用隨這些操作系統提供的Command.com來運行上述MS-DOS批處理文件。

    控制臺替代品4DOS、4OS2、FreeDOS、PeterNorton的NDOS和4NT/TakeCommand為WindowsNT風格的cmd.exe、MS-DOS/Windows95批處理文件(由Command.com運行)、OS/添加了功能2的cmd.exe和4NT分別與它們增強的shell相似,并且與WindowsScriptHost的集成度更高,它預裝了VBScript、JScript和VBA三個引擎,許多第三方引擎都可以被添加,Rexx、Perl、Python、Ruby和Tcl在4NT和相關程序中具有預定義的函數。PCDOS與MS-DOS非常相似,而DRDOS更加不同。早期版本的WindowsNT能夠通過OS/2子系統運行現代版本的4OS2。

    根據定義,腳本語言是可以擴展的;例如,MS-DOS/Windows95/98和WindowsNT類型系統允許shell/批處理程序調用KiXtart、QBasic、各種BASIC、Rexx、Perl和Python實現、Windows腳本主機及其安裝的引擎等工具.在Unix和其他POSIX兼容的系統上,awk和sed用于擴展shell腳本的字符串數字處理能力。Tcl、Perl、Rexx和Python具有圖形工具包,可用于為造成速度瓶頸的shell腳本編寫函數和過程(C、Fortran、匯編語言和c更快),并添加shell語言中不可用的功能例如套接字和其他連接功能、繁重的文本處理、如果調用腳本沒有這些能力則處理數字、自編寫和自修改代碼、遞歸直接內存訪問、各種類型的排序等技術,在主腳本中很難或不可能,等等。VisualBasicforApplications和VBScript可用于控制電子表格、數據庫、各種類型的腳本程序、電信軟件、開發工具、圖形工具和其他可通過組件對象模型訪問的軟件等事物并與之通信

    內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/131947/

    (13)
    詞條目錄
    1. 什么是shell腳本
    2. 生命周期
    3. shell腳本優點和缺點
    4. 其他操作系統上的Shell腳本

    輕觸這里

    關閉目錄

    目錄
    91麻精品国产91久久久久