Solaris上的Bash脚本,在数组上使用“:”并不总是有效

时间:2009-11-25 17:23:52

标签: arrays bash solaris substring

我在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)

任何人都可以解释这种行为吗?

1 个答案:

答案 0 :(得分:2)

这听起来像是Solaris系统上Bash版本中的一个错误。

您运行两个系统的版本(bash --version)是什么?

您可以查看CHANGELOG并搜索在Solaris版本发布之后和Cygwin版本发布之前修复的阵列错误。