Bash 对话框菜单选项作为数组
Bash dialog menu options as array
我收到了 Hetzner API 的 http 响应,其中提供了有关所有卷的信息。我想构建一个带有对话框的菜单,您可以在其中从所有现有卷中进行选择。
这样我得到了 API 的答案:
ALL_VOLUMES_HTTP=$(curl --silent --write-out "HTTPSTATUS:%{http_code}" -H "Authorization: Bearer " https://api.hetzner.cloud/v1/volumes)
jq是这样过滤的
ALL_VOLUME_NAMES=$(jq '.volumes[].name' <<< "$ALL_VOLUMES_HTTP")
ALL_VOLUME_NAMES
的输出格式如下
"volumeName1"
"volumeName2"
但在菜单对话框中显示 like in this image
我已经尝试将 jq (jq '[.volumes[].name'
) 放在括号中,但它也显示完全错误 like in this example
为了生成界面,我使用了以下代码:
SELECTED_VOLUME=$(dialog --title "Volume mount" --menu "Select:" 0 0 0 $ALL_VOLUME_NAMES 3>&1 1>&2 2>&3)
那么如何在给定数据的对话框中生成正确的菜单界面?
可以将信息连接成一个字符串。这导致此代码:
ALL_VOLUMES_HTTP=$(curl --silent --write-out "HTTPSTATUS:%{http_code}" -H "Authorization: Bearer " https://api.hetzner.cloud/v1/volumes)
ALL_VOLUME_NAMES=$(echo $ALL_VOLUMES_HTTP | jq -r '.volumes[].name')
VALUES=""
for i in $ALL_VOLUME_NAMES; do
VALUES="$VALUES $(jq -r '.volumes[]|select(.name=="'$i'")|.id' <<< "$ALL_VOLUMES_HTTP") $i"
done
SELECTED_VOLUME=$(dialog --title "Volume mount" --menu "Select: " 0 0 0 $VALUES 3>&1 1>&2 2>&3)
我收到了 Hetzner API 的 http 响应,其中提供了有关所有卷的信息。我想构建一个带有对话框的菜单,您可以在其中从所有现有卷中进行选择。 这样我得到了 API 的答案:
ALL_VOLUMES_HTTP=$(curl --silent --write-out "HTTPSTATUS:%{http_code}" -H "Authorization: Bearer " https://api.hetzner.cloud/v1/volumes)
jq是这样过滤的
ALL_VOLUME_NAMES=$(jq '.volumes[].name' <<< "$ALL_VOLUMES_HTTP")
ALL_VOLUME_NAMES
的输出格式如下
"volumeName1"
"volumeName2"
但在菜单对话框中显示 like in this image
我已经尝试将 jq (jq '[.volumes[].name'
) 放在括号中,但它也显示完全错误 like in this example
为了生成界面,我使用了以下代码:
SELECTED_VOLUME=$(dialog --title "Volume mount" --menu "Select:" 0 0 0 $ALL_VOLUME_NAMES 3>&1 1>&2 2>&3)
那么如何在给定数据的对话框中生成正确的菜单界面?
可以将信息连接成一个字符串。这导致此代码:
ALL_VOLUMES_HTTP=$(curl --silent --write-out "HTTPSTATUS:%{http_code}" -H "Authorization: Bearer " https://api.hetzner.cloud/v1/volumes)
ALL_VOLUME_NAMES=$(echo $ALL_VOLUMES_HTTP | jq -r '.volumes[].name')
VALUES=""
for i in $ALL_VOLUME_NAMES; do
VALUES="$VALUES $(jq -r '.volumes[]|select(.name=="'$i'")|.id' <<< "$ALL_VOLUMES_HTTP") $i"
done
SELECTED_VOLUME=$(dialog --title "Volume mount" --menu "Select: " 0 0 0 $VALUES 3>&1 1>&2 2>&3)