我在Solaris上的bash脚本中有一个奇怪的数组操作问题。我使用语法${varName[@]:index}
来获取指定索引后的数组varname中的所有元素。但是,如果指定索引后只有一个元素,则不返回任何内容。
这可以通过示例轻松证明:
#!/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)
任何人都可以解释这种行为吗?
答案 0 :(得分:2)
这听起来像是Solaris系统上Bash版本中的一个错误。
您运行两个系统的版本(bash --version
)是什么?
您可以查看CHANGELOG并搜索在Solaris版本发布之后和Cygwin版本发布之前修复的阵列错误。