gpt4 book ai didi

arrays - Bash函数在多行上打印数组

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:06:09 28 4
gpt4 key购买 nike

我编写了这个函数来在 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)-release

最佳答案

如果在将数组发送给函数时不想使用方括号,只发送它的名称并使用间接扩展:

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

关于arrays - Bash函数在多行上打印数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40594630/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com