我尝试使用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的
和其他几种方法,但都未能解决这个问题。
1条答案
按热度按时间nxagd54h1#
我使用Spectacle(在KDE,Debian 12上)作为cURL的文件进行截图。但是,文件创建可能需要一些时间,并且cURL在文件创建之前被执行。在眼镜命令后向代码中添加
sleep 1s
解决了问题,上传现在可以正常工作。