gpt4 book ai didi

linux - 如何遍历 .txt 并将每行的值用作变量 Linux Shell

转载 作者:太空宇宙 更新时间:2023-11-04 10:53:49 25 4
gpt4 key购买 nike

编辑以帮助澄清

目标:设计一个 shell 脚本,允许我从文本文件创建变量,稍后可以由更大的脚本调用

输入文件:TEST.txt

sequence010 FY11
sequence010 FY12
sequence020 FY11
sequence020 FY12
...

每条线代表需要同时利用以代表不同 POV 的成员,即:

POV01=sequence010 FY11
POV02=sequence010 FY12
POV03=sequence020 FY11
POV04=sequence020 FY12
...

计划是以我可以这样创建变量的方式构建它:

POV01=$sequence, $year
POV02=$sequence, $year
POV03=$sequence, $year
export POV01 POV02 POV03

这个主要问题是我如何按顺序逐行读取它们,使正确的序列和年份变量解析为正确的 POV?

我已经尝试了 while 循环、带有嵌套 while 循环的 if 语句、xargs、awk……都无济于事。我最接近的是创建序列和年份变量的 while 循环,但问题是每一行都需要保持相关,因为变量的组合给出了 POV。

最佳答案

带空格的 Shell 变量应该用引号引起来。
使用新的 shell 设置创建一个文件,并在当前 shell 中使用点 (.) 获取该文件。

;> cat TEST.txt
sequence010 FY11
sequence010 FY12
sequence020 FY11
sequence020 FY12

;> cat runit
counter=1
while read -r line; do
printf 'POV%02d="%s"\n' ${counter} "${line}"
(( counter = counter + 1 ))
done < TEST.txt > output.txt

;> ./runit

;> cat output.txt
POV01="sequence010 FY11"
POV02="sequence010 FY12"
POV03="sequence020 FY11"
POV04="sequence020 FY12"

;> . output.txt

;> set | grep "^POV"
POV01='sequence010 FY11'
POV02='sequence010 FY12'
POV03='sequence020 FY11'
POV04='sequence020 FY12'

;> echo ${POV02}
sequence010 FY12

关于linux - 如何遍历 .txt 并将每行的值用作变量 Linux Shell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29650504/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com