【发布时间】:2012-07-08 18:41:15
【问题描述】:
我正在尝试将包含行的文件读入 Bash 数组。
到目前为止,我已经尝试了以下方法:
尝试1
a=( $( cat /path/to/filename ) )
尝试2
index=0
while read line ; do
MYARRAY[$index]="$line"
index=$(($index+1))
done < /path/to/filename
这两种尝试都只返回一个包含文件第一行的单元素数组。我做错了什么?
我正在运行 bash 4.1.5
【问题讨论】:
-
您不需要使用
while循环维护索引。您可以像这样附加到数组:myarray+=($line)。如果您需要增加一个整数,您可以使用(( index++ ))或(( index += 1 ))。 -
@DennisWilliamson 或
let index++ -
@DennisWilliamson
((index++))有一个返回值,如果在set -e模式下运行,它可能会终止脚本。这同样适用于let index++。使用A=$((A+1))是安全的。 -
@ceving:你永远不应该使用
set -e,它是无用的遗物。使用适当的错误处理。 -
@DennisWilliamson 我喜欢它,因为它高效而且非常有用。
set -eu是我的标准前奏。