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

Shell脚本求助:逐行读取文件并生成逗号分隔变量

解决Shell脚本合并文件内容到变量的问题

你的需求是把a.txt里的每行内容合并成逗号分隔的字符串存到var1里,先说说你现有代码的问题:

  • 循环里每次用names=echo $line``会覆盖之前的变量值,所以最后只剩最后一行的内容
  • 输入重定向写的是< "name",这是读名为name的文件,不是你定义的变量$name指向的文件,应该写成< "$name"
  • 用echo $line再赋值完全没必要,read已经把行内容存到line变量里了

下面给你两种可行的方法:

方法一:循环累加(适合理解过程)

初始化一个空变量,每次循环把当前行的内容追加进去:

# 注意这里文件名改成你的目标文件a.txt
name="a.txt"
names=""
while IFS= read -r line
do
    # 把当前行内容追加到names变量后
    names="$names$line"
done < "$name"
# 赋值给目标变量var1
var1="$names"
# 验证结果
echo "var1=$var1"

方法二:用tr命令快速处理(更简洁)

直接用tr命令删除所有换行符,一步到位:

var1=$(tr -d '\n' < a.txt)
echo "var1=$var1"

两种方法运行后都会得到你想要的var1=abc,def,ghi。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 19:35:22