使用 cat 将变量连接到文件

使用 cat 将变量连接到文件

我想做一个 bash 函数,给定一个文本变量,它会将其连接到一个文件。即

function print() {
cat << 'EOF' >> file
This $1 is a variable 
EOF
}

但它不起作用。它总是输出This $1 is a variable

我尝试了${1}{$1}'$1'"$1"以及这些的组合,但都没有用。是否有某种特殊语法,或者我应该使用其他命令...我该怎么办?

答案1

取消引用 EOF:

#!/usr/bin/env bash

function print() {
cat << EOF >> file
This $1 is a variable 
EOF
}

print stuff

其中man bash写道Here Documents

如果 word 未加引号,则此处文档的所有行都将经过参数扩展、命令替换和算术扩展,字符序列 <newline> 将被忽略,并且必须使用 \ 来引用字符 、$ 和 `。

相关内容