gpt4 book ai didi

arrays - 命令的多行输出未按预期将元素分配给 bash 数组

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:27:37 24 4
gpt4 key购买 nike

我正在尝试使用命令的输出将元素分配给数组。我发现的每个示例似乎都能完美运行,而我的代码仅显示 1 个看起来格式错误的元素。

这是输出格式正确的命令。

[root@probe-eno16777736 nst]# tac "/hns/test_cfg" | sed -n -e "/ip address/,/\!/ p" | grep -B1 "\!" | sed '/!/d' | sed '/\-\-/d'
interface GigabitEthernet0
interface GigabitEthernet0/0/3
interface GigabitEthernet0/0/2.3249
interface GigabitEthernet0/0/2.470
interface GigabitEthernet0/0/2
interface GigabitEthernet0/0/1.3249
interface GigabitEthernet0/0/1.470
interface GigabitEthernet0/0/1
interface GigabitEthernet0/0/0.3419
interface GigabitEthernet0/0/0
interface Loopback32491
interface Loopback3249
interface Loopback470

这里我将输出分配给名为“A”的数组

[root@probe-eno16777736 nst]# A=($(tac "/hns/test_cfg" | sed -n -e "/ip address/,/\!/ p" | grep -B1 "\!" | sed '/!/d' | sed '/\-\-/d'))

在这里,我尝试验证从命令输出的每一行都是数组的一个元素,显然情况并非如此。

[root@probe-eno16777736 nst]# echo ${A[@]}
interface Loopback47091et0/0/0.3419

最佳答案

你应该使用正确的IFS:

IFS=$'\n' declare -a arr=($(tac "/hns/test_cfg" | sed -n -e "/ip address/,/\!/ p" | 
grep -B1 "\!" | sed -e '/!/d' -e '/--/d' -e 's/\r//'))

IFS=$'\n' 将在填充数组 arr 时在换行符处拆分输入。

打印数组:

printf "%s\n" "${arr[@]}"

关于arrays - 命令的多行输出未按预期将元素分配给 bash 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32210470/

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