bash中的“ cat << EOF”如何工作?
我需要编写脚本以将多行输入输入到程序( psql )。 经过一番谷歌搜索,我发现以下语法有效: cat << EOF | psql ---params BEGIN; `pg_dump ----something` update table .... statement ...; END; EOF 这样可以正确构造多行字符串(从 BEGIN; 到 END; ,包括两端),并将其作为输入传递给 psql 。 但是我不知道它如何/为什么起作用,请解释一下吗? 我主要是指 cat << EOF ,我知道 > 输出到文件, >> 追加到文件, < 从文件读取输入。 << 到底是做什么的? 并且有手册页吗? #1楼 当在Bash中处理多行文本时, cat <<EOF 语法非常有用。 将多行字符串分配给shell变量,文件或管道时。 Bash中 cat <<EOF 语法用法的示例: 1.将多行字符串分配给shell变量 $ sql=$(cat <<EOF SELECT foo, bar FROM db WHERE foo='baz' EOF ) 现在, $sql 变量也包含换行符。 您可以使用 echo -e "$sql" 进行验证。 2.将多行字符串传递到Bash中的文件 $ cat <<EOF > print.sh #!/bin/bash echo \$PWD echo $PWD EOF