【问题标题】:Is there in bash scripts a way of using variables to specify different bash arrays [duplicate]bash脚本中是否有一种使用变量来指定不同bash数组的方法[重复]
【发布时间】:2021-10-08 18:40:53
【问题描述】:

例如在这个简单的脚本中

    #!/bin/bash
    
    declare -a MYARRAY1
    declare -a MYARRAY2
    
    function updatearray {
    ARRAY=$1
    VALUE=$2
    
    $ARRAY+=$VALUE
    
    }

    updatearray MYARRAY1  "yyyy "
    updatearray MYARRAY2  "bbbb "
    
    echo "${MYARRAY1[@]}"
    echo "${MYARRAY2[@]}"
    
    exit 0

只会导致“第 10 行:MYARRAY1+=yyyy:找不到命令”,而不是更新数组。这实际上是针对我正在处理的更复杂的 bash 脚本,它有更多我想要更新的数组,所以我希望避免“case”语句,这意味着函数体很大

【问题讨论】:

  • 您需要 bash 4.3 或更高版本;您想要的功能称为 namerefs
  • 顺便说一句,最好使用 POSIX 函数声明 -- updatearray() { 没有 function。见wiki.bash-hackers.org/scripting/obsolete

标签: arrays linux bash function


【解决方案1】:

你可以使用namerefs,但是take care:

updatearray () {
    declare -n a=$1
    a+=$2
}

【讨论】:

    猜你喜欢
    • 2017-12-26
    • 2016-09-24
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    相关资源
    最近更新 更多