这是我简单的Bash脚本:
curljson() {
eval "curl $* | python -m json.tool"
}
它只是以可读的方式输出JSON。
但是当我这样做时:
curljson -X PUT -d '{"settings": {"number_of_shards": 3, "number_of_replicas": 1}}' http://192.168.1.111:9200/blogs
我收到此错误:
(eval):1: parse error near `}'
但是,当我这样做时,它会起作用,所以它似乎是我的剧本。
那么如何让这个Bash脚本接受}
?
答案 0 :(得分:2)
你根本不需要eval
。
curljson() {
curl "$@" | python -m json.tool
}
所有curljson
确实将其参数的所有参数传递给curl
,然后将输出传递给Python脚本。 "$@"
扩展为函数作为参数接收的相同单词序列。