You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shell脚本中用变量作为curl文件名时出现curl error(26)问题

问题解决:Shell脚本中curl上传图片时变量导致的文件读取错误

错误原因分析

你的脚本存在两处引号使用错误:

  1. DATE_NOW=$(date \"%Y%m%d_%H%M%s\") 中多余的转义引号,这会导致date命令的格式参数被错误解析(虽实际输出看似正常,但属于语法错误)。
  2. curl的-F参数被拆分成多段引号:"file=@/home/user/Documents/ShareX/Screenshots/2023/image_"$DATE_NOW".jpg",这种写法会让shell将字符串拆为三个独立部分,即使变量内容无空格,也会导致curl无法正确识别完整文件路径,从而触发Failed to open/read local data错误。

修正后的脚本

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赋值:去掉date命令参数的转义引号,$(...)内部直接用普通双引号包裹格式字符串即可。
  • curl的-F参数:将整个字段值放在一个双引号内,变量直接嵌入其中(用${DATE_NOW}是为明确变量边界,避免与后续.jpg混淆,属于规范写法)。
  • API_URL加引号:给$API_URL包裹双引号,防止URL含特殊字符(如&、空格)时被shell错误拆分。

内容的提问来源于stack exchange,提问作者elix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 00:28:25