编辑以帮助澄清
目标:设计一个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循环,xargs,awk ......都无济于事。我最接近的是一个创建序列和年变量的while循环,但问题是每一行都需要保持相关,因为变量的组合给出了POV。
答案 0 :(得分:1)
带空格的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