在shell脚本

时间:2016-08-12 21:20:58

标签: shell

我有一个测试文件。并假设内容是这样的。我想将它放入一个由"分号"分隔的数组中。在shell脚本中

  

历史是关于过去事件的信息的发现,收集,组织,分析和呈现。历史也可能意味着连续的;重要或公共事件或特定趋势或机构的时间顺序记录。撰写历史的学者称为历史学家。这是一个知识领域,它使用叙述来检查和分析事件的顺序;它有时会试图客观地调查决定事件的因果模式;

预期产出:

array[0]应包含:

  

历史是关于过去事件的信息的发现,收集,组织,分析和呈现。历史也可能意味着连续性;

array[1]应包含:

  

重要或公共事件或特定趋势或机构的时间顺序记录。撰写历史的学者称为历史学家。这是一个知识领域,它使用叙述来检查和分析事件的顺序;

array[3]应包含:

  

它有时会尝试客观地调查决定事件的因果模式;

就像这样.......逻辑是什么......

1 个答案:

答案 0 :(得分:0)

请注意,下面是针对bash编写的,而不是POSIX sh(不支持数组)。

如果你加载这样的内容:

array=( )
while IFS= read -r -d ';' content; do
  array+=( "${content};" )
done <input.txt

...然后

echo "First section:  ${array[0]}"
echo "Second section: ${array[1]}"

......等等将按预期运作。这是因为bash read -d扩展将下一个字符视为记录结束分隔符,这样读取就会继续进行。

有关在bash中读取文件内容的更多信息,请参阅BashFAQ #1(&#34;如何逐行读取文件(数据流,变量)(和/或逐字段) ?&#34;。)