1

Solarisのbashスクリプト内での配列操作に奇妙な問題があります。構文${varName[@]:index}を使用して、指定されたインデックスの後の配列varnameのすべての要素を取得しています。ただし、指定したインデックスの後に要素が1つしかない場合は、何も返されません。

これは、例によって簡単に示すことができます。

#!/bin/bash

paramArray=( a b c )
echo "everything after 2" ${paramArray[@]:2} # Should display c but doesn't
echo "parameter 2 only  " ${paramArray[2]}   # Correctly displays c

paramArray=( a b c d e )
echo "everything after 2" ${paramArray[@]:2} # Correctly displays c d e
echo "parameter 2 only  " ${paramArray[2]}   # Correctly displays c

このコードは、Cygwinを実行しているWindowsボックスでは正しく機能しますが、Solarisでは失敗します(バージョン:Solaris 9 9/05 s9s_u8wos_05 SPARC)

誰かがこの行動を説明できますか?

4

1 に答える 1

2

これは、SolarisシステムのBashのバージョンのバグのように聞こえます。

bash --version両方のシステムを実行しているバージョン()は何ですか?

CHANGELOGを調べて、Solarisバージョンのリリース後およびCygwinバージョンのリリース前に修正されたアレイのバグを検索する場合があります。

于 2009-11-25T17:57:36.493 に答える