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

Unix变量存大JSON执行echo命令报“Filename too long”求助

解决超大JSON变量写入文件的"Filename too long"问题

错误原因

你遇到的错误本质是命令行参数长度超出系统限制:当执行echo $rules时,shell会先展开未加引号的$rules,将JSON内容拆分成大量分词作为命令行参数传给echo,总长度超过了系统允许的最大命令行参数长度,因此触发报错(错误描述"Filename too long"有误导性,实际是参数过长)。另外注意,你的变量赋值语句rules = '<BIG JSON>';有语法错误,shell变量赋值时=前后不能有空格,正确写法是rules='<BIG JSON>'。

解决方法

以下几种方式都能绕过命令行参数长度限制,完美写入超大变量内容:

  • 方法1:使用printf配合带引号的变量
    用printf的格式字符串接收变量,避免将变量内容拆分成多个参数:

    printf '%s' "$rules" > filename.txt
    

    "$rules"会保留变量的原始格式(包括换行、空格、特殊字符),确保JSON内容完整。

  • 方法2:使用here-string(推荐)
    通过here-string将变量内容作为输入传给cat,完全避开命令行参数传递:

    cat > filename.txt <<< "$rules"
    

    这种方式对任意大小的变量都适用,是处理超大内容变量最稳妥的方式。

  • 方法3:使用here-doc(适合复杂场景)
    如果需要在写入前做简单处理,也可以用here-doc:

    cat > filename.txt << EOF
    $rules
    EOF
    

    注意EOF要顶格写,且前后不能有多余空格,否则会导致内容截断或错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 03:44:53