如何构建一个 env 文件(带有 $ 字符),从 echo 命令按原样列出?

如何构建一个 env 文件(带有 $ 字符),从 echo 命令按原样列出?

我正在尝试构建一个从脚本调用的文件,该文件与文件的引号中的内容相呼应 - 只是省略了$

这就是我试图做的:

echo -e "export ORACLE_BASE=/oracle/APP/grid \n 
export ORACLE_HOME=/oracle/APP/grid/12.1.0/grid\n
export PATH=$ORACLE_HOME/bin:$PATH\n export ORACLE_SID=+ASM”>/home/oragrid/ASM.env 

但它并没有完全echo进入文件。

答案1

不要echo -e在旨在实现可移植性的脚本中使用。使用内置的 shell,printf()它可以像以前一样执行所有操作,并且仍然保持跨 shell 的兼容。不过,根据您的要求,要存储多行字符串而不扩展前缀为 的变量$,请使用here-doc

cat << 'EOF' > /home/oragrid/ASM.env
export ORACLE_BASE=/oracle/APP/grid
export ORACLE_HOME=/oracle/APP/grid/12.1.0/grid
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=+ASM
EOF

这将使所有内容保持EOF完整,而不是扩展其中的变量。

相关内容