我正在尝试将一些内容写入文件,同时更改一些将通过参数传递的值。
我关注了这个答案 使用 Shell 脚本创建包含部分内容的文件
cat > filename <<- "EOF"
File contents
More contents
EOF
当我像这样运行脚本时:
./script Abraham
我想在文件中写入类似以下内容的内容:
Hello Abraham
More contents, etc...
我有 Javascript 背景,因此我尝试了类似以下的方法:
`Hello ${1}, etc...`
但我从文件里得到的内容是:
Hello $1
More contents, etc...
因为不允许我设置参数的变量。那么我该如何实现呢?提前致谢。
答案1
首字母周围的引号"EOF"
可防止变量扩展。要在 heredoc 文本中使用变量,您需要一个不带引号的分隔符:
cat > filename <<- EOF
Hello $1
More contents, etc...
EOF
但是你必须小心其余内容中的 shell 语法。
另一种选择是单独编写此行,然后使用 heredoc 编写固定内容:
echo "Hello $1" > filename
cat >> filename <<- "EOF"
More contents, etc...
EOF
>>
请注意初始写入后附加的用途。