Arrays Bash函数在多行上打印数组
我编写此函数是为了在bash中打印数组,而没有使用可怕的括号语法:Arrays Bash函数在多行上打印数组,arrays,linux,bash,function,printf,Arrays,Linux,Bash,Function,Printf,我编写此函数是为了在bash中打印数组,而没有使用可怕的括号语法: printarr() { arr=$1 # first argument printf '%s\n' "${arr[@]}" } 没有按预期工作 它将打印出您馈送的第一个数组,但如果您馈送另一个数组,它将再次打印出第一个数组 我这样称呼它 $ arr=( "single" "line" "arr" ) $ printarr $arr $ multiarr=( "multi" > "line"
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)-发行版如果在将数组发送到函数时不想使用括号,请仅发送其名称并使用间接扩展:
#! /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
如果在将数组发送到函数时不想使用括号,请仅发送其名称并使用间接扩展:
#! /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
@anubhava添加到questionRelated的底部,甚至可能是一个dupe:它现在正在工作,我想发生的事情是我调用了一个函数,其中的一个参数前面没有美元符号,比如
printarr arr
@anubhava添加到questionRelated的底部,甚至可能是一个dupe:它现在正在工作,我想发生的是,我调用了一个函数,其中的一个参数前面没有美元符号,比如printarr-arr