Variable
為什麼 curl 不能在循環內擴展變數,但 echo 可以?
我需要在 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 中使用文件名?
您引用了
*
萬用字元,防止外殼擴展它。for fname in assets/*.drx; do printf '%s\n' "$fname" curl -F file=@"$fname" "http://someurl.com/" done
該
fname
變數被分配了文字文本assets/*.drx
。當你在 中使用它時,shell 會盡職地擴展它*。*echo