如何在Bash中写入数组

时间:2019-05-05 11:41:41

标签: arrays bash

有人知道这是什么问题,为什么它不希望将函数中的所有置换都添加到数组“ array”中,而当我运行循环时,我只能得到最后一个值

#!/bin/bash
array=()
permutation() {

  local items="$1"
  local out="$2"
  local i
  [[ "$items" == "" ]] && array[$i]="$out" && return
  for (( i=0; i<${#items}; i++ )) ; do
    permutation "${items:0:i}${items:i+1}" "$out${items:i:1}"
  done
  }

permutation $1

for i in "${array[$i]}"
do 
  echo "$i"
done

1 个答案:

答案 0 :(得分:0)

  1. 使用array+=( "$out" )可以附加到数组的末尾,而无需知道该值的索引。因为您是在本地声明i,所以不会在函数调用之间共享它,因此它们都将覆盖${array[0]}
  2. for i in "${array[$i]}"; do会忽略数组中所有值,除了位于$i位置的那个值之外,对于{em>之前中存在的i的单个值进入{1}}循环。使用for遍历数组中的所有值。

查看在https://ideone.com/zIYigA上运行的代码的更正版本