使用列输出中的命令变量不起作用

时间:2016-03-02 23:01:59

标签: arrays bash formatting

我使用的脚本使用curl从配置中获取特定的数组值。我想将输出放在分隔值的列中(值对于脚本是未知的)。这是我的代码:

# get overlay networks and their details
get_overlay=`curl -H "X-Person-Token: $auth_token" -H "X-Person-Email: $auth_email" -k "$api_host/api/v1/networks"`

# array of overlay names with uuid
overlay_name=`echo $get_overlay | jq '.[] | .name'`
overlay_uuid=`echo $get_overlay | jq '.[] | .uuid'`
    echo ""
    echo -e "Overlay UUID\n$oname $ouuid" | column -t
exit 0

这是输出:

Overlay                                 UUID
"TESTOVERLAY"
"Auto_API_Overlay"
"ANOTHEROVERLAYTEST"                    "ea178905-6ab0-4154-ab05-412dc4b39151"
"e5be9dbe-b0fc-4e30-aaf5-ac4bdcd863a7"
"850ebf6b-3651-4cf1-aae1-5a6c03fad61b"

我期待的是:

Overlay                                 UUID
"TESTOVERLAY"                           "ea178905-6ab0-4154-ab05-412dc4b39151"
"Auto_API_Overlay"                      "e5be9dbe-b0fc-4e30-aaf5-ac4bdcd863a7"
"ANOTHEROVERLAYTEST"                    "850ebf6b-3651-4cf1-aae1-5a6c03fad61b"

我是绝对的初学者,非常感谢任何见解。 谢谢!

1 个答案:

答案 0 :(得分:1)

我建议使用paste逐行合并你的两个变量:

paste <(printf 'Overlay\n%s\n' "$name") <(printf 'UUID\n%s\n' "$uuid") | column -t

使用两个进程替换来传递每个变量的内容及其标题。