<和<<之间的区别,用于使用readarray

时间:2019-05-03 00:22:03

标签: bash

我用文件中存在的值填充数组。我使用<,它工作得很好,但是当我使用<<时,它不起作用。

据我所知,<和<<用于重定向。 <将覆盖文件的内容,而<<将新内容附加到文件。

完美的工作代码

#!/bin/bash

declare -a array
array[0]="hi"
readarray array < file

echo ${array[@]}

无效代码

#!/bin/bash

declare -a array
array[0]="hi"
readarray array << file

echo ${array[@]}

1 个答案:

答案 0 :(得分:5)

您误会了。 >覆盖文件,而>>附加到文件。 <从文件中读取输入,但是<<表示heredoc的开始。当您写时:

cmd << file
some text
file

cmd<< file和仅包含字符串file的行作为其stdin。通常的用法是直接在脚本中嵌入命令的输入,通常选择比“文件”更具描述性的分隔符。常见的选择是字符串EOF。例如:

cat > file << EOF
this will be written to file
EOF

是用于将特定内容写入文件的常见习语。