for循环的输出列表作为变量

Output list of for loop as variable

我正在尝试根据设置为变量的 OS 类型(只需要 RedHat 服务器主机名)获取主机名的输出。

但我的代码不断吐出字符串 RedHat 以及每个主机名。

minions=$(salt-run manage.up | cut -a " " -f2)

hosts=$(for minion in ${minions[@]}; do salt ${minion} grains.items | grep "os_family:" | grep RedHat && echo ${minion}; done)

默认grep会输出模式匹配的结果。

如果您的 grep 版本支持它...... -q 标志将抑制输出:

... | grep -q RedHat && echo ${minion}; done)

或者,将输出重定向到 /dev/null:

... | grep RedHat >/dev/null && echo ${minion}; done)