shell 在文件名中使用变量时出现cURL错误(26)

pu82cl6c  于 2023-08-07  发布在  Shell
关注(0)|答案(1)|浏览(126)

我尝试使用curl将图像发送到API,但在shell脚本中使用它与变量时,我得到了一个错误。

curl: (26) Failed to open/read local data from file/application

字符串
代码看起来像这样:

DATE_NOW=$(date "+%Y%m%d_%H%M%s")

curl -k -4 -v -X POST -H "Authorization: Bearer $API_KEY" -F "file=@/home/user/Documents/ShareX/Screenshots/2023/image_"$DATE_NOW".jpg" $API_URL


我怀疑

"$DATE_NOW"


但是在同一个脚本中使用echo可以正确地替换所有变量。当我在命令行中单独使用不带任何变量的命令时,它会正确地上传文件。

echo "curl -k -4 -v -X POST -H "Authorization: Bearer $API_KEY" -F "file=@/home/user/Documents/ShareX/Screenshots/2023/image_"$DATE_NOW".jpg" $API_URL"


我尝试添加花括号,如

"${DATE_NOW}"


但结果是一样的我看了几篇文章,包括
When to wrap quotes around a shell variable
How to pass a variable in a curl command in shell scripting
和其他几种方法,但都未能解决这个问题。

nxagd54h

nxagd54h1#

我使用Spectacle(在KDE,Debian 12上)作为cURL的文件进行截图。但是,文件创建可能需要一些时间,并且cURL在文件创建之前被执行。在眼镜命令后向代码中添加sleep 1s解决了问题,上传现在可以正常工作。

相关问题