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

使用bash变量传入HTTPS链接时feh报错‘链接不存在’

解决feh提示图片链接不存在的问题

你遇到的核心问题是用cut命令解析JSON返回值时,拿到的image变量包含了多余字符(比如双引号、换行或无效符号),再加上请求API时用了错误的HTTP头,导致返回内容不符合预期,最终feh把带冗余字符的字符串当成本地文件路径,自然提示“不存在”。

问题根源拆解

  1. waifu.pics的API返回的是JSON格式,但你设置了Accept: application/xml和Content-Type: application/xml头,这会让API返回非预期的内容格式;
  2. 用cut这种纯文本切割工具处理JSON非常不可靠,很容易把URL和JSON的引号、括号混在一起,比如最终拿到的image可能是"https://xxx.png"(带双引号),feh会把这个带引号的字符串当成本地文件名,自然找不到。

修复后的脚本

先确保系统安装了jq(大多数发行版可用apt install jq或yum install jq安装),然后替换成以下脚本:

for line in $(cat ~/bin/img-num.txt)
do
    sleep 0.1
    X=$(shuf -i 1-2100 -n 1)
    Y=$(shuf -i 1-1100 -n 1)
    # 去掉错误的XML头,用jq精准解析JSON提取纯净URL
    image=$(curl -s -X GET https://api.waifu.pics/sfw/waifu | jq -r '.url')
    feh -g 500x500+$X+$Y --scale-down "$image" &
done

关键优化点

  • 移除了错误的XML请求头,让API返回标准JSON格式;
  • 用jq -r '.url'提取URL,-r参数确保输出不带双引号的纯净字符串;
  • curl加-s参数屏蔽进度条等冗余输出,避免干扰变量赋值。

你可以先手动执行curl -s https://api.waifu.pics/sfw/waifu | jq -r '.url',把输出结果赋值给image后再运行feh命令,就能验证修复效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 15:47:46