シェルスクリプトでの「BASH-isms」の回避


37

Perl :: Criticに似たツールを使用して、シェルスクリプトを検査し、欠陥、移植性の問題、フォールバックのない非標準プログラムの使用、プログラムの減価償却などを指摘しますか?

これset -o posixにより、POSIX以外の使用が無効になりますが、1から始まるzshインデックス付けのシェル配列、0からのbash、配列をまったくサポートしないashなど、知りたいことはわかりません。

回答:


36

checkbashismsがあります。Debianでは、パッケージメンテナーツールの一部として出荷されます

ダッシュposhの下でスクリプトをテストします。両方にいくつかの非POSIXコンストラクトがありますが、スクリプトが両方で機能する場合、ほとんどの場所で機能する可能性があります。(典型的なシェルスクリプトには多くのコーナーケースがある傾向があるため、テストするのは難しいという注意事項があります。)

スクリプトを組み込みLinuxプラットフォームに移植可能にする場合は、BusyBoxでテストしてください。BusyBoxは、必要な組み込みシステムのサイズに応じて、多少制限されることに注意してください。一部のBusyBoxインストールにはない機能に依存するスクリプトがあるのはごく普通のことです。

非移植性はシェルだけから来るのではなく、外部ユーティリティからも来ることに注意してください。OpenBSDとSolarisにはPOSIX機能を備えたユーティリティが含まれている傾向があるため、移植性のテストに適しています。

POSIX仕様、およびこのスレッドで言及されている他のリソース(特にautoconfマニュアル)を参照するとよいでしょう。しかし、それはドキュメントであり、機能を誤って使用した場合には役に立ちません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.