首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将命令输出拆分为行数组

将命令输出拆分为行数组
EN

Stack Overflow用户
提问于 2016-05-25 11:43:43
回答 2查看 1.2K关注 0票数 3

下面是我的bash函数,它获取命令的输出作为参数,然后返回一个输出行数组。

代码语言:javascript
复制
function get_lines { 
    while read -r line; do 
        echo $line
    done <<< $1
}

SESSIONS=`loginctl list-sessions`
get_lines "$SESSIONS"

loginctl list-sessions的实际输出为:

代码语言:javascript
复制
   SESSION        UID USER             SEAT            
        c2       1000 asif             seat0           
        c7       1002 sadia            seat0           

但是while循环只运行一次,在一行中打印所有输出。如何获取行数组并返回它?

EN

回答 2

Stack Overflow用户

发布于 2016-05-25 12:06:13

您可以使用readarray并避免使用get_lines函数:

代码语言:javascript
复制
readarray SESSIONS < <(loginctl --no-legend list-sessions)

这将创建数组SESSIONS,并将命令输出的每一行映射到数组的一个元素。

票数 3
EN

Stack Overflow用户

发布于 2016-05-25 12:09:41

以下是bash v4+中的一种方法:

代码语言:javascript
复制
SESSIONS=`loginctl list-sessions`
mapfile -t myArray <<< "$SESSIONS"

参考:

Creating an array from a text file in BASH with mapfile

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37427432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档