我用eval得到了一个解析错误}

时间:2015-06-01 14:20:12

标签: bash

这是我简单的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脚本接受}

1 个答案:

答案 0 :(得分:2)

你根本不需要eval

curljson() {
    curl "$@" | python -m json.tool
}

所有curljson确实将参数的所有参数传递给curl,然后将输出传递给Python脚本。 "$@"扩展为函数作为参数接收的相同单词序列。