我正在尝试构建一个从脚本调用的文件,该文件与文件的引号中的内容相呼应 - 只是省略了$
。
这就是我试图做的:
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
完整,而不是扩展其中的变量。