无效的 bash 变量赋值

无效的 bash 变量赋值

我有两个脚本,分别是variables.shinstall.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}"

摘录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"

摘录.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

我尝试使用shellcheck程序来查看哪里出错了。但它也没有指出我的错误。如果有人能给我指明正确的方向,我将不胜感激。

答案1

尝试

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"

您仍然应该在 heredoc 中获得变量扩展,但您可以摆脱混乱的引用。

答案2

尝试通过 bash 的解释模式 -x 运行你的脚本

bash -x install.sh 

这将显示命令的返回值和变量的内容,并突出显示您出错的地方。

相关内容