【问题标题】:feed multiple lines to bash variable from text file [duplicate]从文本文件向 bash 变量提供多行 [重复]
【发布时间】:2017-11-17 03:01:36
【问题描述】:

这可能会被标记为重复,但是在阅读了几篇帖子后,我仍然无法使我的 bash 脚本工作。 我有一个多行的文本文件;每行只有 1 个字符串。我想将内容导入 bash 变量,例如每一行都是一个单独的元素。 因此,例如,如果 MYVAR 是提到的变量,我希望能够通过其位置访问任何元素,例如:

for i in $(seq 0 2)
do
        echo ${MYVAR[$i]}
done

以上只是一个例子;我不需要 for 循环,这就是我没有使用 while read LINE 策略的原因。 我尝试了几种方法,但文件一直被导入为 1 个包含全部内容的长字符串。希望我的目的很明确,感谢您的帮助。

【问题讨论】:

  • 你为什么不使用while read循环?

标签: bash


【解决方案1】:

仅将 IFS 更改为换行符,并使用 () 将文件读入数组:

OFS=$IFS
IFS=$'\n'
MYVAR=($(<myfilename.txt))
for i in $(seq 0 2)
do
        echo ${MYVAR[$i]}
done
# setup the IFS to its original value
IFS=$OFS

【讨论】:

  • 谢谢,成功了!今天早上,我以更新鲜的心态,回顾了我的剧本。令我困惑的是,IFS 默认应该是空格、换行符和制表符。因此,即使不更改 IFS,上面的脚本也应该可以工作(并且确实可以)。我意识到我最初的错误之一是在 'MYVAR=($(
猜你喜欢
  • 1970-01-01
  • 2018-10-13
  • 1970-01-01
  • 2021-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-06
  • 2018-01-14
相关资源
最近更新 更多