[英]What's the best way to write cross-platform shell scripts
我有一個shell腳本,我想在多個平台上運行,所有平台都支持bash。 我的問題是某些命令在Linux,FreeBSD,OS X和Cygwin上表現不同。
到目前為止我的想法是:
$OSTYPE
和source
執行特定的文件(可選)替換表現不同的命令。 如果我這樣做,我應該如何使用多個參數處理命令? 傳遞給函數的四個位置參數不是最干凈的方法。 $OSTYPE
並創建一個OPSUFFIX
變量,然后為每個操作調用operation$OPSUFFIX
。 ./configure
magic? 首先,盡可能找到在差異無關緊要的情況下做自己想做的事情的方法。 例如,某些版本的tar用於不支持-z選項來處理gzip壓縮文件。 然而,結合tar和gzip是可移植的。 類似地,有一些方法可以調用ps,它們通常在BSD和LINUX上都有效。
一旦你發現你仍然需要處理的事情,你采購文件來提供處理命令語法的函數似乎是合理的。 為避免位置參數,您可以使用內置bash的getopt。
另一種方法可能是編寫一個python腳本或類似的東西,它只封裝了最糟糕的平台依賴命令行為。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.