簡體   English   中英

編寫跨平台shell腳本的最佳方法是什么

[英]What's the best way to write cross-platform shell scripts

我有一個shell腳本,我想在多個平台上運行,所有平台都支持bash。 我的問題是某些命令在Linux,FreeBSD,OS X和Cygwin上表現不同。

到目前為止我的想法是:

  • 在主腳本中的所有特定OS的操作創建功能默認實現,然后檢查$OSTYPEsource執行特定的文件(可選)替換表現不同的命令。 如果我這樣做,我應該如何使用多個參數處理命令? 傳遞給函數的四個位置參數不是最干凈的方法。
  • 將所有實現放在我的腳本中,每個實現都有一個名稱中的詞綴,檢查$OSTYPE並創建一個OPSUFFIX變量,然后為每個操作調用operation$OPSUFFIX
  • ./configure magic?
  • 遷移到類似Python的東西 - 可能是最明智的,但需要更多的代碼更改。 如果這是一個慣用的init腳本,這不是一個選項。

首先,盡可能找到在差異無關緊要的情況下做自己想做的事情的方法。 例如,某些版本的tar用於不支持-z選項來處理gzip壓縮文件。 然而,結合tar和gzip是可移植的。 類似地,有一些方法可以調用ps,它們通常在BSD和LINUX上都有效。

一旦你發現你仍然需要處理的事情,你采購文件來提供處理命令語法的函數似乎是合理的。 為避免位置參數,您可以使用內置bash的getopt。

另一種方法可能是編寫一個python腳本或類似的東西,它只封裝了最糟糕的平台依賴命令行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM