我用文件中存在的值填充数组。我使用<,它工作得很好,但是当我使用<<时,它不起作用。
据我所知,<和<<用于重定向。 <将覆盖文件的内容,而<<将新内容附加到文件。
完美的工作代码
#!/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[@]}
答案 0 :(得分:5)
您误会了。 >
覆盖文件,而>>
附加到文件。 <
从文件中读取输入,但是<<
表示heredoc的开始。当您写时:
cmd << file
some text
file
cmd
将<< file
和仅包含字符串file
的行作为其stdin。通常的用法是直接在脚本中嵌入命令的输入,通常选择比“文件”更具描述性的分隔符。常见的选择是字符串EOF。例如:
cat > file << EOF
this will be written to file
EOF
是用于将特定内容写入文件的常见习语。