【问题标题】:bash - add a variable to binary inside stringbash - 将变量添加到字符串内的二进制文件
【发布时间】:2015-04-02 09:49:58
【问题描述】:

所以我在 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 字符串前面的 $ 有关?我尝试删除 $,但它不起作用。

我试过 $(postcode) 等都无济于事

【问题讨论】:

  • 但解决方案与引号无关。解决方案(正如@choroba 所确定的)是制作字符串 C 样式的第二部分(我忽略了)。因此,您应该删除您的反对票。
  • 不幸的是,除非编辑了问题,否则我不能删除我的反对票。我的道歉。
  • 嗨@tipleee。我明白。谢谢你这么诚实。如果我遇到攻击性行为,我很抱歉。

标签: linux bash curl


【解决方案1】:

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

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

【讨论】:

  • 这正是问题所在!!!我在这呆了将近一个小时。一个好地方。谢谢!
【解决方案2】:
#!/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

【讨论】:

    猜你喜欢
    • 2019-06-26
    • 1970-01-01
    • 2016-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-28
    • 2016-08-30
    相关资源
    最近更新 更多