我编写了这个函数来在bash中打印数组而不使用那种可怕的括号语法:
printarr()
{
arr=$1 # first argument
printf '%s\n' "${arr[@]}"
}
无法按预期工作。
它会打印出你喂它的第一个数组,但是如果你把它送到另一个数组,它会再打印出第一个数组。
我称之为
$ arr=( "single" "line" "arr" )
$ printarr $arr
$ multiarr=( "multi"
> "line"
> "arr")
$ printarr $multiarr
GNU bash,版本3.2.25(1) - 发布
答案 0 :(得分:3)
如果您在将数组发送到函数时不想使用括号,请发送其名称并使用间接扩展:
#! /bin/bash
printarr()
{
arr=$1'[@]'
printf '%s\n' "${!arr}"
}
arr1=( "single" "line" "arr with spaces" )
arr2=( "SINGLE" "LINE" "ARR WITH SPACES" )
printarr arr1
printarr arr2