我想从 bash 脚本创建一个文件。但是我需要扩展一些变量并从字面上打印其他变量这可能吗?
cat <<EOF > file.sh
$EXPAND
$PRINTLITERALLY
EOF
此外,我正在尝试创建一个非常大的文件,当我尝试将其粘贴到终端中进行测试时,我收到如下错误:
-bash: urlencode: command not found
所以看起来我可能有 bash 正在解释的东西,这会在运行时影响我的 bash 脚本吗?我觉得必须有更好的方法来从我的 bash 脚本创建文件
file.sh
会创建作为内容。
(您需要在每次出现
$
或`
不希望扩展相应的参数扩展、算术扩展或命令替换的位置之前添加一个反斜杠。您还需要转义一些反斜杠字符)。另一种方法:
引用分隔符的此处文档(
3<< 'NOT-EXPANDED'
如上)不进行外壳扩展,因此您可以决定执行扩展的部分和不执行扩展的部分。有了上面,你会得到:
如果您只想扩展一组特定的变量,无论它们出现在哪里,而不扩展所有其他参数扩展、命令替换、算术扩展,您可以使用
envsubst
GNU 附带的实用程序gettext
。但是请注意,它仅扩展
$var
和${var}
,而不是涉及$var
变量的任何其他形式的参数扩展(例如${var#?}
,${var[x]}
...)给出:
有关详细信息,请参阅
info gettext envsubst
。