我需要在curl中包含变量
for fname in "assets/*.drx"; do
echo $fname
curl -F file=@"$fname" "http://someurl.com/"
echo $fnamename
done
结果:
assets/5baa5caa414f1d7786e86d03_1545903119.11.drx
curl: (26) couldn't open file "assets/*.drx"
assets/5baa5caa414f1d7786e86d03_1545903119.11.drx
看起来curl使用glob表达式,但echo使用实际的文件名。为什么curl会有这样的行为?为什么 echo 看到实际变量以及如何在curl 中使用文件名?
答案1
您引用了*
通配符,防止 shell 扩展它。
for fname in assets/*.drx; do
printf '%s\n' "$fname"
curl -F file=@"$fname" "http://someurl.com/"
done
该fname
变量被赋值为文字文本assets/*.drx
。当你使用它时未引用的在 中echo
,shell 尽职尽责地扩展了它。