1

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

谁能解释这种行为?

4

1 回答 1

2

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

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

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

于 2009-11-25T17:57:36.493 回答