下面是我的bash函数,它获取命令的输出作为参数,然后返回一个输出行数组。
function get_lines {
while read -r line; do
echo $line
done <<< $1
}
SESSIONS=`loginctl list-sessions`
get_lines "$SESSIONS"loginctl list-sessions的实际输出为:
SESSION UID USER SEAT
c2 1000 asif seat0
c7 1002 sadia seat0 但是while循环只运行一次,在一行中打印所有输出。如何获取行数组并返回它?
发布于 2016-05-25 12:06:13
您可以使用readarray并避免使用get_lines函数:
readarray SESSIONS < <(loginctl --no-legend list-sessions)这将创建数组SESSIONS,并将命令输出的每一行映射到数组的一个元素。
发布于 2016-05-25 12:09:41
以下是bash v4+中的一种方法:
SESSIONS=`loginctl list-sessions`
mapfile -t myArray <<< "$SESSIONS"参考:
https://stackoverflow.com/questions/37427432
复制相似问题