1

我没有在网站上找到解决方案。

如何将文本内容存储到 bash 中的数组中?

这段代码实际上是这样做的,但在删除字符串之前有空格。

index=0

while read line; do
echo $line
str_array[index]="$line"
done < /testfile
4

3 回答 3

2

对于 bash,使用内置mapfile

$ cat testfile
asdf
 asdf
  asdf
   asdf
$ mapfile -t str_array < testfile
$ printf "%s\n" "${str_array[@]}"
asdf
 asdf
  asdf
   asdf

在 bash 提示符下,请参阅help mapfile

于 2013-05-29T16:58:18.710 回答
1

您需要取消定义字段分隔符,所以它会像:

while IFS= read line; do
  echo "$line"
  ...
done < /testfile
于 2013-05-29T14:55:32.263 回答
1

你可以这样做:

index=0

while IFS= read line ; do
    str_array[$index]="$line" 
    index=$(($index+1))
done < testfile

正如@glennjackman 在评论中建议的那样

index=0

while IFS= read line ; do
    str_array[index++]="$line" 
done < testfile
于 2013-05-29T14:55:55.847 回答