首页 > 解决方案 > Bash / Shell脚本在读取文件时将字符串与字段参数连接在while循环中

问题描述

我很难正确读取一个文件,它只不过是一个 key=value 文件。

这是文件:

#test.txt

global.project=99999 
global.env=pr
global.app=Terraform
global.dcs=CloudBroker
global.cbp=n/a

这是代码:

TS=""
while IFS== read -r f1 f2; do
    echo $f1
    echo $f2
    val=$f2
    TS+="\"${f1}\":\"${f2}\","

done < "tags.txt"

echo "${TS}" # Result: ","global.cbp":"n/audBroker

结果很奇怪。当我删除 f2 时,不会出现任何问题。

预期的结果应该是:

"global.opco":"99999","global.env":"pr" 等等。

标签: stringbashloopsfile

解决方案


根据@GordonDavisson 的评论,我修改了脚本,它现在就像一个魅力:


TS=""
while IFS=$'=\r' read -r f1 f2; do
    echo $f1
    echo $f2
    val=$f2
    TS+="\"${f1}\":\"${f2}\","

done < "tags.txt"

echo "${TS}" # Result: {"global.project":"99999","global.env":"pr","global.app":"Terraform","global.dcs":"CloudBroker","global.cbp":"n/a",}


推荐阅读