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

Shell中while循环读取双文件做curl请求时仅读取file2一行如何解决

问题原因与修复方案

问题产生原因

  • 你使用&&逻辑符连接了两个文件的read操作,while循环的执行前提是两个read命令都成功读取到内容。由于file1仅包含1行内容,第一次循环执行后file1就已读到文件末尾(EOF),第二次循环时读取file1的操作会返回非0退出码,整个判断条件直接失效,循环终止,因此只能处理file2的第一行内容。
  • 额外存在的隐患:你当前使用> output.txt重定向curl输出,每次循环都会覆盖上一次的写入结果,即便循环正常执行多次,最终也只会保留最后一次请求的返回内容。

修复方案

由于file1仅存储1行固定的授权凭证,不需要放到循环中重复读取,提前读取为全局变量即可,循环仅需要遍历file2的多行请求路径:

# 提前读取file1中的授权token
token=$(<"$file1")
# 可选:先清空历史输出文件,不需要保留历史可删除该行
> output.txt
# 循环仅读取file2的每行内容发起请求
while IFS= read -r line1; do
    curl -H "Authorization: Bearer $token" -X GET "$url$line1" >> output.txt
done < "$file2"

如果需要将每次请求的结果保存为独立文件,可将重定向逻辑改为> "output_${line1//\//_}.txt",避免路径中的特殊字符导致写入失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:09:05