我有一个 bash 脚本,它对 URL 执行curl 请求。所有curl标头和信息都包含在一个变量中,这是一个简化的示例
STRING="'http://www.mydomain.com/url' -H 'mydomain.com'"
我最初让脚本通过 echo 和 xargs 来传递它,但我一直在读到这可能不是一个好方法
我在尝试时遇到了问题curl $STRING
,添加双引号使其curl "$STRING"
现在给出了一个curl错误,指出“curl:(1)协议“'http”在libcurl中不支持或禁用”
我猜想我在这里忽略了一些简单的事情,可能与引号和空格有关(我之前尝试转义单引号,只是将它们逐字添加到字符串中)
如果我回显 $STRING ,它会将其显示为带有所有引号和单引号的书写形式,并且echo $STRING | xargs curl
正确执行我想要的操作,它会在输入时使用我的字符串进行卷曲
答案1
有什么问题xargs
,特别是如果它有效的话?
Shell 会删除不是任何扩展结果的引号,这意味着它不会删除因删除双引号而产生的单引号。使用数组代替:
args=('http://www.mydomain.com/url' -H 'mydomain.com')
curl "${args[@]}"
答案2
您的错误中的单词之前似乎有一个额外的引号http这可能会触发它。您应该在执行之前尝试回显字符串,以确保语法正确。
"curl: (1) Protocol "'http" not supported or disabled in libcurl"
^