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

如何在Bash中将for循环输出的字符串转为标准JSON数组?

解决字符串转JSON数组的问题

你的输入字符串是空格分隔的两个值,而且里面隐藏了Windows风格的回车符\r,这才导致之前的命令输出异常。下面是几个正确的处理方式:

方式一:先清除回车符再按空格分割

echo "$var" | tr -d '\r' | jq -R -c 'split(" ")'

tr -d '\r'会先把字符串里的回车符全部删掉,再用jq按空格分割成数组,就能得到预期的["something1/value1","something2/value2"]。

方式二:用jq直接处理回车符和分割

echo "$var" | jq -R -c 'gsub("\r"; "") | split(" ")'

通过jq的gsub函数去掉所有\r,再执行空格分割,效果和方式一一致。

进阶处理:兼容多连续空格/末尾空格

如果输入里可能存在多个连续空格或者末尾空格,可以用正则分割并过滤空值:

echo "$var" | jq -R -c 'gsub("\r"; "") | split(/\s+/) | map(select(length>0))'

split(/\s+/)会按任意空白字符分割,map(select(length>0))则会把分割后产生的空字符串去掉,避免数组里出现空元素。

为什么之前的命令失败?

你之前用split("\n")是按换行分割,但你的输入是空格分隔的内容,再加上输入里的\r,导致两个值被连在一起变成了一个元素,自然得不到正确结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 15:57:16