我想做一个 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> 将被忽略,并且必须使用 \ 来引用字符 、$ 和 `。