Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Bash函数在多行上打印数组_Arrays_Linux_Bash_Function_Printf - Fatal编程技术网

Arrays 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"

我编写此函数是为了在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)-发行版

如果在将数组发送到函数时不想使用括号,请仅发送其名称并使用间接扩展:

#! /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