如何在bash数组中存储命令返回值

时间:2013-08-21 19:15:04

标签: arrays bash

我有一个命令在执行时返回我想要存储在bash数组中的数字集。

    vihaan@trojan:~/trash$ xdotool search brain 
Defaulting to search window name, class, and classname
52428804
50331651
62914564
65011896
48234499

如何将这些值存储在数组中?

3 个答案:

答案 0 :(得分:17)

在这个简单的案例中:

array=( $(xdotool search brain) )

如果输出更复杂(例如,行可能包含空格),则可以使用bash builtin mapfile

mapfile -t array < <(xdotool search brain)

help mapfile了解更多信息)

答案 1 :(得分:4)

declare -a myarr  # declare an array
myarr=($(grep -v "Defaulting" $(xdotool search brain) | awk '{printf $1" "}'))  # Fill the array with all the numbers from the command line
echo ${myarr[*]}  # echo all the elements of the array

OR

echo ${myarr[1]}  # First element of the array

答案 2 :(得分:0)

您可以编写另一个命令预期输入并将所述输入放入数组中。因此,您可以将第一个命令的输出传递给toArray命令。然后使用toArray输出执行您需要的操作。