我需要写两个变量,比如$ {myvar}及其值。
此代码不能替代并按原样写入文本:
cat >${PROGNAME_APPDIR}/AppRun <<'EOF'
#!/bin/bash
HERE=$(dirname $(readlink -f "${0}"))
export LD_PRELOAD="${HERE}"/lib/exec_wrapper.so
export BIN_DIR="${HERE}${DIR}"
exec "${BIN_DIR}"/binary "$@"
EOF
当我将<< 'EOF'
更改为<< EOF
时,代码会替换所有代码。但我需要替换${DIR}
的值。
如何在没有疯狂编码的情况下进行混合编写?
答案 0 :(得分:4)
您必须转义$
符号,将$
更改为\$
,以便将其视为正常字符:
cat >${PROGNAME_APPDIR}/AppRun <<EOF
#!/bin/bash
HERE=\$(dirname \$(readlink -f "\${0}"))
export LD_PRELOAD="\${HERE}"/lib/exec_wrapper.so
export BIN_DIR="\${HERE}${DIR}"
exec "\${BIN_DIR}"/binary "\$@"
EOF