my code:
#!/usr/bin/bash
IFS=$'n'; read -r -a item < "animals.txt"
declare -p item
animals.txt:
dog
cat
duck
bird
所需输出:
declare -a item=([0]="dog" [1]=" cat" [2]=" duck" [3]=" bird")
结果:
declare -a item=([0]="dog")
Bash文档说,如果IFS
未设置,那么默认值将是<space>
,<tab>
和<newline>
,但即使我从代码中删除IFS=$'n'
,它仍然不起作用。
read
(包括read -a
)读取1行输入,默认在空白处分割(由IFS
设置控制)readarray
(又名mapfile
)读取多行输入,默认情况下以换行符分隔(由其-d
参数控制)。
$ readarray -t item < animals.txt
$ declare -p item
declare -a item=([0]="dog" [1]="cat" [2]="duck" [3]="bird")