curl命令可以手动运行,但不能在脚本中运行

时间:2020-06-21 19:42:37

标签: bash curl

我在脚本中有一个curl命令,运行该脚本时该命令无法获取资源(该命令本身有效,这是错误的响应),但是如果我将同一命令复制并粘贴到终端我得到了预期的响应。

阅读this后,我的脚本如下:

jsess=`awk '/\sJSESSION/ { print "\x27"$6"="$7"\x27" }' cookies.txt`
ARGS=( -k -v -b $jsess $url7)
echo "curl ${ARGS[*]}"
curl "${ARGS[@]}"

最后一个回声看起来像这样:

curl -k -v -b 'JSESSIONID=hexystuff' https://secretstuff.com

最后一次卷曲不起作用,但复制粘贴该回声即可。任何想法可能有什么问题吗?谢谢。

2 个答案:

答案 0 :(得分:1)

问题似乎在两个单引号中,请尝试以下操作:

jsess="$(awk '/\sJSESSION/ { print $6"="$7 }' cookies.txt)"
ARGS=( -k -v -b "$jsess" "$url7")
echo "curl ${ARGS[*]}"
curl "${ARGS[@]}"

答案 1 :(得分:0)

args="-k -v -b"
jsess=$(awk '/\sJSESSION/ { print "\x27"$6"="$7"\x27" }' cookies.txt)
url7="https://secretstuff.com"

curl "${args}" "${jsess}" "${url7}"

使用数组并不是我个人的喜好,我相信当前的情况说明了原因。我认为,每个数据项都应尽可能包含在其自己的变量中。这使得访问所述变量变得更加简单,并且还大大增加了灵活性。我可以准确选择将哪些信息放入给定的命令行中。