我在下面尝试将参数传递给httpie,它意外地变成了POST方法。
1)
$ echo "a1 b1" | xargs -t -n2 bash -c 'http -v https://httpbin.org/anything arg1==$0 arg2==$1'
bash -c http -v https://httpbin.org/anything arg1==$0 arg2==$1 a1 b1
2)
$ echo "arg1==a1 arg2==b1" | xargs -t -n2 bash -c 'http -v https://httpbin.org/anything'
bash -c http -v https://httpbin.org/anything arg1==a1 arg2==b1
第一个返回下面,似乎还有其他"a1 b1"抑制了正确的请求。
bash -c http -v https://httpbin.org/anything arg1==$0 arg2==$1 a1 b1
第二个返回似乎不太远,但实际方法变成了 POST。
有没有办法将多个参数传递给 httpie?
以下是实现目标的方法:
echo "a1 b1" |
awk '{print "http -v https://httpbin.org/anything arg1=="$1" arg2=="$2}' |
bash
即使手动插入字符串,如下所示:
$ echo 'http -v https://httpbin.org/anything arg1==a1 arg2==b2' | bash
工作原理不如下:
$ http -v https://httpbin.org/anything arg1==a1 arg2==b2
我不明白发生这种情况的原因,但只要我指定方法,它就起作用了。
$ echo "a1 b1" | xargs -t -n2 bash -c 'http -v GET https://httpbin.org/anything arg1==$0 arg2==$1
^^^
我想我得到了它的原因,这是由于 stdin,所以可以通过 --ignore-stdin 选项来避免它。