Bash 如何包装cURL,以便使用命令行编辑器处理Cloudant查询?
我希望创建一个shell脚本,它封装了的常见cURL操作 shell脚本应该允许我:Bash 如何包装cURL,以便使用命令行编辑器处理Cloudant查询?,bash,cloudant,Bash,Cloudant,我希望创建一个shell脚本,它封装了的常见cURL操作 shell脚本应该允许我: 使用脚本中嵌入的json创建查询 通过提供设计文件名称、查询类型和查询名称删除查询 使用脚本中嵌入的json执行查询(查找) 列出数据库上的查询 脚本不应在每次使用时提示您输入cloudant用户名和密码 以下脚本允许我停留在vim编辑器中,迭代编辑JSON并执行它: #!/bin/bash set -e USERNAME=snowch DBNAME=stackoverflow FIND_JSON='{
- 使用脚本中嵌入的json创建查询
- 通过提供设计文件名称、查询类型和查询名称删除查询
- 使用脚本中嵌入的json执行查询(查找)
- 列出数据库上的查询
脚本不应在每次使用时提示您输入cloudant用户名和密码 以下脚本允许我停留在vim编辑器中,迭代编辑JSON并执行它:
#!/bin/bash
set -e
USERNAME=snowch
DBNAME=stackoverflow
FIND_JSON='{
"selector": {
"subject": {"$eq": "sample topic"}
},
"fields": ["_id", "_rev", "subject"],
"sort": [{"subject": "asc"}],
"limit": 10,
"skip": 0
}'
CREATE_JSON='
{
"index": {
"fields": ["subject"]
},
"name" : "subject-index",
"type" : "json"
}'
JSON_PP='python -m json.tool' # By default use pythons json formatter
#JSON_PP="jq '.'" # Uncomment this to use the jq json formatter
SCRIPT=$(basename $0)
if [[ ! $1 =~ (create)|(list)|(delete)|(find) ]]; then
echo "Usage: ./$SCRIPT create|list|delete|find"
exit 1
fi
if [[ ! -e ~/.netrc ]]; then
echo "Could not find your ~/.netrc file containing your Cloudant login credentials. For example:"
echo ""
echo "machine <<username>>.cloudant.com login <<username>> password <<password>>"
exit 1
fi
if [[ $1 == 'find' ]];
then
curl -n -X POST https://$USERNAME.cloudant.com/$DBNAME/_find -d "$FIND_JSON"
fi
if [[ $1 == 'create' ]];
then
curl -n -X POST https://$USERNAME.cloudant.com/$DBNAME/_index -d "$CREATE_JSON"
fi
if [[ $1 == 'list' ]];
then
CMD="curl -n -s -X GET https://$USERNAME.cloudant.com/$DBNAME/_index | $JSON_PP"
eval "$CMD"
fi
if [[ $1 == 'delete' ]];
then
if [[ -z $2 ]]; then
echo "Usage: ./$SCRIPT delete design_doc/type/name"
exit 1
fi
curl -n -s -X DELETE https://$USERNAME.cloudant.com/$DBNAME/_index/$2
fi
#/bin/bash
set-e
用户名=snowch
DBNAME=stackoverflow
查找{
“选择器”:{
“主题”:{“$eq”:“示例主题”}
},
“字段”:[“\u id”、“\u rev”、“subject”],
“排序”:[{“主题”:“asc”}],
“限制”:10,
“跳过”:0
}'
创建
{
“索引”:{
“字段”:[“主题”]
},
“名称”:“主题索引”,
“类型”:“json”
}'
JSON_PP='python-m JSON.tool'#默认情况下使用pythons JSON格式化程序
#JSON_PP=“jq.”“#取消对其注释以使用jq JSON格式化程序
脚本=$(基本名称$0)
如果[!$1=~(create)|(list)|(delete)|(find)];然后
echo“用法:./$SCRIPT创建|列表|删除|查找”
出口1
fi
如果[!-e~/.netrc]];然后
echo“找不到包含Cloudant登录凭据的~/.netrc文件。例如:
回声“”
echo“machine.cloudant.com登录密码”
出口1
fi
如果[[$1=='find']];
然后
curl-n-X POST https://$USERNAME.cloudant.com/$DBNAME/\u find-d“$find\u JSON”
fi
如果[[$1=='创建']];
然后
curl-n-X POST https://$USERNAME.cloudant.com/$DBNAME/_index-d“$CREATE_JSON”
fi
如果[[$1=='列表']];
然后
CMD=“curl-n-s-X GET https://$USERNAME.cloudant.com/$DBNAME/_index |$JSON_PP”
eval“$CMD”
fi
如果[[$1=='删除']];
然后
如果[-z$2]];然后
echo“用法:./$SCRIPT删除设计\文档/类型/名称”
出口1
fi
curl-n-s-X删除https://$USERNAME.cloudant.com/$DBNAME/_index/$2
fi
如果我将脚本保存为util.sh
我使用vim的工作流将类似于:
- $vim util.sh
- 编辑创建json
- CTRL-Z至背景vim
- 创建查询:
$./util.sh create
- 验证它:
$./util.sh list
- 执行它:
$./util.sh find
- 如果需要更改:
- 从
$./util.sh列表
- 删除查询
$./util.sh delete/json/subject index
- 将vim带回前台
fg
- 编辑json
- 从CTRL-Z到背景vim重复前面的步骤
- 从