当前位置:  开发笔记 > 编程语言 > 正文

带有空格的Bash多行输出,作为数组变量

如何解决《带有空格的Bash多行输出,作为数组变量》经验,为你挑选了1个好方法。

我在Mac OS X上的Bash 3.2上遇到命令输出的问题。我有一个输出多行字符串的命令。字符串的每一行在值中都有空格。

我想将每个值分配给数组变量的元素。

我有以下脚本:

declare -a sublist;
sublist=`azure account list --json | jsawk 'return this.name' -a 'return this.join("\n")'`;
echo ${sublist[0]};

azure命令的输出为:

Visual Studio Ultimate with MSDN
Microsoft Partner Network

echo命令的值是:

Visual Studio Ultimate with MSDN Microsoft Partner Network

期望 echo命令的输出是:

Visual Studio Ultimate with MSDN

命名的变量sublist应该是一个包含两个元素的数组:

[0] Visual Studio Ultimate with MSDN
[1] Microsoft Partner Network

我真正挣扎的部分是将每一行,包括空格,都视为一个字符串。我已经尝试了第2行的许多变体,在该变体中,我将命令输出分配给了sublist变量,但没有找到一个可行的方法。



1> chepner..:

您声明sublist是一个数组,但仅分配给第一个元素(sublist并且sublist[0]在大多数情况下是同义词)。在bash4,你可以使用readarray命令:

readarray -t sublist < <(azure account list --json | jsawk 'return this.name' -a 'return this.join("\n")')

bash4 之前,您需要一个循环来一次为每个元素分配一个:

while IFS= read -r line; do
    sublist+=( "$line" )
done < <(azure ...)

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有