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
相关产品推荐
相关产品推荐

