bash 脚本 - 在 cat 中使用和扩展变量

bash script - use and expand variable in cat

在我的 bash 脚本中我有这个:

myapphome=/home/username/Documents/myapp

cat << 'EOT' > "$myapphome"/some.properties
dir.root="$myapphome"/app_data
EOT

预计在 some.properties:

dir.root=/home/username/Documents/myapp/app_data

但实际上是:

dir.root="$myapphome"/app_data

我这里做错了什么?我的意思是我想在我的 some.properties 文件中扩展 $myapphome。

如果要bash在here文档中展开变量,不要引用终止符:

cat << EOT > "$myapphome"/some.properties
dir.root=$myapphome/app_data
EOT

此外,请从此处文档中删除双引号,它们不会被扩展删除。

参见man bash

If EOT is unquoted, all lines of the here-document are subjected to parameter expansion, command substitution, and arithmetic expansion, the character sequence \<newline> is ignored, and \ must be used to quote the characters \, $, and `.

只需删除终止符中的单引号。当您不想在 heredoc 中扩展变量时使用引号:

cat << EOT > "$myapphome"/some.properties
dir.root=$myapphome/app_data
EOT

您可能还想删除变量周围的双引号 ;)