bash - 在string中添加一个变量到binary

时间:2015-04-02 09:49:59

标签: linux bash curl

所以我在bash脚本中有一个curl命令:

#!/bin/bash
curl -s 'http://eamorr.com/?' -H 'Host: eamorr.com' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:36.0) Gecko/20100101 Firefox/36.0' --data-binary $'-----------------------------1024109981087242139340277850\r\nContent-Disposition: form-data; name="target"\r\n\r\n90210\r\n-----------------------------102410998108724213934027785--\r\n'

这对我来说很好。

现在,我想尝试90211

,而不是90210
#!/bin/bash

postcode=90211

curl -s 'http://eamorr.com/?' -H 'Host: eamorr.com' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:36.0) Gecko/20100101 Firefox/36.0' --data-binary $'-----------------------------1024109981087242139340277850\r\nContent-Disposition: form-data; name="target"\r\n\r\n'$postcode'\r\n-----------------------------102410998108724213934027785--\r\n'

这不会起作用......

我认为它与--data-binary字符串前面的$有关?我尝试放弃$,但它不会起作用。

我试过$(邮政编码)等无济于事

2 个答案:

答案 0 :(得分:2)

问题是你现在错误地引用了邮政编码后面的内容。 \r\n不是用单引号解释的,您需要$'\r\n'

...'$postcode$'\r\n...

答案 1 :(得分:0)

#!/bin/bash

postcode="90211"

curl -s 'http://eamorr.com/?' -H 'Host: eamorr.com' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:36.0) Gecko/20100101 Firefox/36.0' --data-binary $"-----------------------------1024109981087242139340277850\r\nContent-Disposition: form-data; name=\"target\"\r\n\r\n$postcode\r\n-----------------------------102410998108724213934027785--\r\n"

使用引文是一种很好的做法,而"'$postcode'"实际上是'90211'而不是90211