【问题标题】:bash/shell pass array to function then loop? [duplicate]bash/shell 将数组传递给函数然后循环? [复制]
【发布时间】:2013-02-09 17:45:59
【问题描述】:

当直接在函数中定义一个数组时,下面会按预期工作;

function each {
  local array=(1 2 3)
  len=${#array[*]}
  for (( i=0; i<len; i++ )); do
    echo ${array[$i]}
  done
}

each

# outputs;

1
2
3

但我不知道如何将数组作为参数传入并获得相同的输出;

function each {
  local array=$1
  len=${#array[*]}
  for (( i=0; i<len; i++ )); do
    echo ${array[$i]}
  done
}

array=(1 2 3)
each array

# outputs;

array

感谢您的帮助,谢谢。

【问题讨论】:

    标签: arrays bash shell loops


    【解决方案1】:

    我会将数组元素作为不同的位置参数传递给函数:

    function f() {
        local array = "$@";
        # ...
    }
    
    ## calling your function
    f ("${array[@]}")
    

    【讨论】:

    • 感谢 Costi,不过会以欺骗的方式关闭它
    • 在意识到已经有完整的讨论已经澄清了这一点后,我投票决定自己关闭它。 :)
    猜你喜欢
    • 2016-08-16
    • 2014-01-10
    • 2019-11-30
    • 2011-11-18
    • 2011-11-24
    • 2015-11-10
    • 2017-06-03
    • 2011-12-26
    • 1970-01-01
    相关资源
    最近更新 更多