0

Linux で bash スクリプトを作成しましたが、うまく機能します。移行の一環として、クラスターに aix 7.2 ノードを移動 [むしろ追加] しました。aix で bash スクリプトを実行しようとすると、さまざまな gnu bash コマンドで複数のエラーが発生して失敗しました。[ps: この aix ノードに gnu bash をインストールしました。IBM はこれを aix 用に作成されたツールボックスと呼んでいます。これには、AIX IBM Systems 用に構築されたオープン ソースと GNU ソフトウェアのコレクションが含まれています]

例えば ​​:

- grep -oP サポートされていません

- ls -h 動作しません

- getopts渡さ$#れたパラメータを取得できません。

gnu bashをaixにインストールするだけで正しく実行できているかどうかはわかりません。bash スクリプトを ssh に移植した経験のある人はいますか? aixでbashスクリプトを機能させるために提案できるポインターコミュニティはありますか?

4

2 に答える 2

6

問題は、これらのコマンドが の一部ではないことですbash。必要なのは、これらすべてのユーティリティの GNU バージョン、つまりgreplsです。ビルトインについては、スクリプトを実行しているバージョンと比較して、スクリプトを開発したgetoptsバージョンを確認してください。bash

$ bash --version
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.

それが私のbashバージョンです。bash実稼働環境に非常に古いバージョンの bash がある場合は、スクリプト (Bourne Again SHell)の代わりに bourne シェル スクリプトを使用して、移植可能なスクリプトを確保する必要があります。

編集: Olivier Dulacの回答を盗用して、ポータブル Bourne シェル スクリプトのシェル コマンド言語に関する POSIX ページをご覧ください。ポータブル オプションのlsおよびgrepについては、POSIX 標準ページを参照してください。

別の編集:標準ユーティリティのGNUバリアントについては、AIX Toolbox for Linuxのページを参照してください。/usr/linux/bin

さらに別の編集: pedzによると、このリンクは AIX ツールボックスのより良い (100% 互換性のある) 代替品を示しています

于 2013-06-17T12:50:56.463 に答える
0

可能な限り標準に固執する...

さまざまなシステムで使用する必要がある場合は、sh 互換のスクリプトを記述します。

広くサポートされている古いオプションに固執します ( -hls のオプションや、その他の gnu 導入の優れた点は、あると便利ですが、移植性が十分ではありません)。

于 2013-06-17T15:18:01.367 に答える