2016-08-12 136 views
-2

我有一个测试文件。并假设内容是这样的。我想把它放到一个由shell脚本中的“分号”分隔的数组中在shell脚本中将分号分隔的字符串加载到数组中

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

预期输出:

array[0]应包含以下内容:

历史是发现,收集,整理,分析,以及对过去事件的信息报告。历史通常也意味着连续的;

array[1]应包含以下内容:

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

array[3]应包含以下内容:

,而且有时试图客观地调查因果决定事件的规律;

像这样....会是怎样的逻辑....

+0

'array [1]'不打印名为'array'的数组的第二个元素。你的意思是'echo'$ {array [1]}'应该打印那个吗? –

+0

是的......它会是$ {array [0]}然后是$ {array [1]} ...就像那样 – abhisek

+0

BTW,normal POSIX sh根本不支持数组,所以我假设你想为此使用不同的shell - ksh?bash?你能指定你的确切平台吗? –

回答

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(“我怎样才能读取一个文件(数据流,变量)行由行(和/或场逐场)?”) 。

+0

谢谢..已经工作:) – abhisek

相关问题