我有两个脚本,分别是variables.sh和install.sh。当我执行时bash install.sh,.config文件未正确创建。该export CC行不会BUILD64向其中添加变量条目,并且未"在行尾添加。
片段variables.sh:
INSTALL_DIR="/tmp/panda64"
TARGET="x86_64-panda-linux-gnu"
BUILD64="-m64"
CC="${TARGET}-gcc ${BUILD64}"
Run Code Online (Sandbox Code Playgroud)
片段install.sh:
cat > "${INSTALL_DIR}/.config" << "EOF"
#!/usr/bin/env bash
EOF
echo "export INSTALL_DIR=\""${INSTALL_DIR}\""" >> "${INSTALL_DIR}/.config"
echo "export TARGET=\""${TARGET}\""" >> "${INSTALL_DIR}/.config"
echo "export BUILD64=\""${BUILD64}\""" >> "${INSTALL_DIR}/.config"
echo "export CC=\""${CC}\""" >> "${INSTALL_DIR}/.config"
source "${INSTALL_DIR}/.config"
Run Code Online (Sandbox Code Playgroud)
片段 .config
#!/usr/bin/env bash
export INSTALL_DIR="/tmp/panda64"
export TARGET="x86_64-panda-linux-gnu"
export BUILD64="-m64"
export CC="x86_64-panda-linux-gnu-gcc
Run Code Online (Sandbox Code Playgroud)
我尝试使用shellcheck程序来查看我哪里出错了。但这也没有指出我的错误。如果有人能指出我正确的方向,我将不胜感激。
试试吧
cat > "${INSTALL_DIR}/.config" << EOF
#!/usr/bin/env bash
export INSTALL_DIR="${INSTALL_DIR}"
export TARGET="${TARGET}"
export BUILD64="${BUILD64}"
export CC="${CC}"
EOF
source "${INSTALL_DIR}/.config"
Run Code Online (Sandbox Code Playgroud)
您仍然应该在 heredoc 中获得变量扩展,但您可以摆脱混乱的引用。