我在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]};
< p > azure
命令的输出如下:
Visual Studio Ultimate with MSDN
Microsoft Partner Network
< p > echo
命令的值为:
Visual Studio Ultimate with MSDN Microsoft Partner Network
我希望您能够将echo命令的输出预期为:
```text
我期望echo命令的输出结果是:
```Visual Studio Ultimate with MSDN
变量名为
sublist
的应该是一个数组,包含两个元素:[0] Visual Studio Ultimate with MSDN
[1] Microsoft Partner Network
我真正困扰的部分是让每一整行,包括其中的空格,被视为一个单独的字符串。我尝试了许多第二行的变体,其中我将命令输出分配给sublist
变量,但都没有找到可以运行的变体。
azure
的输出被视为文件,通过正常的输入重定向,readarray
命令或循环从中读取。我使用它来代替管道(azure ... | readarray
或azure ... | while ...; do ... ; done
),以便sublist
在当前shell中设置,而不是子shell中。 - chepner