我正在将项目读入数组然后将其打印出来。我注意到的是,如果列表中的最后一项没有回车符,它就不会成为数组的一部分。如果列表中只有一个项目,则会发生同样的事情。
# Read the file in parameter and fill the array named "array"
getArray() {
local i=0
array=() # Clear array
while IFS= read -r line # Read a line
do
array+=( "$line" ) # Append line to the array
done < "$1"
}
getArray "list.txt"
#display array elements
for e in "${array[@]}"
do
echo $e
done
list.txt包含以下内容:
黄
绿色
褐色
如果棕色后没有回车,例如,棕色将不是阵列的一部分。无论如何要解决这个问题?
答案 0 :(得分:0)
hacky解决方案是接受不以换行符结尾的非空行。
while IFS= read -r line || [[ -n $line ]]; do
但是,您可以使用mapfile
模块替换循环和处理带尾随换行符的数据。
zmodload zsh/mapfile
array=("${(f@)${mapfile[list.txt]%$'\n'}}")