【发布时间】:2015-01-22 17:36:51
【问题描述】:
我正在尝试使用 bash 中的选择功能创建一个菜单。我正在访问一个 API,它将以 json 格式返回其输出。然后,我会将 API 返回的内容处理到用户可以与之交互的 select 语句中。
这是 API 调用以及我如何解析输出:
curl -H "Authorization:Bearer $ACCESS_TOKEN" https://api.runscope.com/buckets \
| python -mjson.tool > output.json
这将通过python的json解析工具将curl的输出发送到output.json文件中。
然后我使用这个 json blob 创建一个数组。我必须将 IFS 设置为 \n 才能正确解析文件:
IFS=$'\n'
BUCKETS=("$(jq '.data | .[].name' output.json)")
然后我向数组添加一个退出选项,以便用户可以退出选择菜单:
BUCKETS+=("Exit")
最后,我创建了菜单:
select BUCKET in $BUCKETS;
do
case $BUCKET in
"Exit")
echo "Exiting..."
break;;
esac
echo "You picked: $BUCKET"
done
不幸的是,这不会创建退出选项。我可以看到一个包含我想要的所有其他选项的菜单,除了退出选项。菜单和数组中的每个选项都有引号。如何让退出选项显示?
【问题讨论】: