スクリプトがあります。bash の連想配列を使用する必要があります (これについては私を信頼してください)。
通常のマシンと、/bin/bash 3.2 を持つ特定の追加マシンで実行する必要があります。
インタープリターを、そこに置いたbash 4.2の場所であると宣言すると正常に動作し/opt/userwriteablefolder/bin/bash4
ます..しかし、それはそのマシンでのみ動作します。
スクリプトの冒頭で、解釈シェルが何であるかをチェックするテストを行いたいと思います。それが bash3.2 の場合は、bash4 $0 $@
. 問題は、解釈しているシェルが何であるかを判断する方法がわからないことです。私は $HOSTNAME ベースの決定を行いたくないのですが、必要に応じて機能します (「これは既に実行済みです」というフラグを渡す必要があるため、これも厄介です)。
いくつかの理由から、「スクリプトを 2 つだけ用意する」という方法は適切な解決策ではありません。