2013-01-12 29 views
0

我试图在数组变量中使用变量,但它不像预期的那样工作。如何在数组内使用变量

CODE

ENV2[0]=567 
    ENV1[0]=123 
    ENV1[1]=789 
    if [ $1 -eq 1 ] 
    then 
    name=ENV1 
    echo "${name[0]}" 
    echo "${name[1]}" 
    else 
    name=ENV1 
    echo "${name[1]}" 
    fi 

输出:而不是 “123” ENV1 ,其打印 “ENV1”,并在第二部分回声一个空行。请帮助获得正确的输出,我是一个初学者。由于

+0

你使用什么语言?尝试名称= ENV1 [0] – rusty009

+0

嗨Rusty009,我使用ksh。我想只替换名称= ENV1,因为我必须列出名称[0],名称[1]而不是逐一声明。 – Vinoth

回答

0

name=ENV1不会变ENV1的内容分配给变量name,但实际的字符串ENV1代替。

  • 到阵列ENV1复制到name,你可以这样做:

    name=$ENV1

    这是一样的name=${ENV1[0]}。数组 变量的第一个元素将被复制,因为未指定索引。所以在这里, 只考虑索引0。

  • 要分配的ENV1所有值name,你应该这样做:

    set -A name "${ENV1[@]}"

    这个数组变量name设置为的ENV1所有元素。

+0

感谢amartine,在if和else部分中为'echo'$ {name [1]}“''获得空行。请指教。 – Vinoth

+0

您是否在代码中使用了'set -A name“$ {ENV1 [@]}”'而不是'name = ENV1'?如果是这样,请让我知道您的更新代码。 – amartine

+0

嗨amartine,它的工作,但是当我在调试模式下运行脚本(sh -x name.sh),然后显示错误并中止。 **错误**:name.sh:第55行:设置:-A:无效选项 设置:usage:set [--abefhkmnptuvxBCHP] [-o选项] [arg ...] – Vinoth