我在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]};
Run Code Online (Sandbox Code Playgroud)
该azure命令的输出为:
Visual Studio Ultimate with MSDN
Microsoft Partner Network
Run Code Online (Sandbox Code Playgroud)
该echo命令的值是:
Visual Studio Ultimate with MSDN Microsoft Partner Network
Run Code Online (Sandbox Code Playgroud)
我期望 echo命令的输出是:
Visual Studio Ultimate with MSDN
Run Code Online (Sandbox Code Playgroud)
命名的变量sublist应该是一个包含两个元素的数组:
[0] Visual Studio Ultimate with MSDN
[1] Microsoft Partner Network
Run Code Online (Sandbox Code Playgroud)
我真正挣扎的部分是将每一行,包括空格,都视为一个字符串。我已经尝试了第2行的许多变体,在该变体中,我将命令输出分配给了sublist变量,但没有找到一个可行的方法。
您声明sublist是一个数组,但仅分配给第一个元素(sublist并且sublist[0]在大多数情况下是同义词)。在bash4,你可以使用readarray命令:
readarray -t sublist < <(azure account list --json | jsawk 'return this.name' -a 'return this.join("\n")')
Run Code Online (Sandbox Code Playgroud)
在bash4 之前,您需要一个循环来一次为每个元素分配一个:
while IFS= read -r line; do
sublist+=( "$line" )
done < <(azure ...)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1614 次 |
| 最近记录: |