我在脚本中有一个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
最后一次卷曲不起作用,但复制粘贴该回声即可。任何想法可能有什么问题吗?谢谢。
答案 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}"
使用数组并不是我个人的喜好,我相信当前的情况说明了原因。我认为,每个数据项都应尽可能包含在其自己的变量中。这使得访问所述变量变得更加简单,并且还大大增加了灵活性。我可以准确选择将哪些信息放入给定的命令行中。