Atribuição de variável bash inválida

3

Eu tenho dois scripts, ou seja, variables.sh e install.sh . Quando executo bash install.sh , o arquivo .config não é criado corretamente. A linha export CC não adiciona BUILD64 da entrada da variável e não adiciona o " no final da linha.

Snippet de variables.sh :

INSTALL_DIR="/tmp/panda64"
TARGET="x86_64-panda-linux-gnu"
BUILD64="-m64"
CC="${TARGET}-gcc ${BUILD64}"

Snippet de 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"

Snippet de .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

Eu tentei usar o programa shellcheck para ver onde estou errado. Mas também não aponta meu erro. Eu apreciaria se alguém me apontasse na direção certa.

    
por Abhimanyu Saharan 13.05.2016 / 15:14

2 respostas

5

tente

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"

você ainda deve ter uma expansão variável dentro do heredoc, mas você pode se livrar das citações erradas.

    
por the_velour_fog 13.05.2016 / 15:26
2

tente executar seus scripts através do modo de explicação do bash -x

bash -x install.sh 

Isso mostrará os valores de retorno dos comandos e o conteúdo das variáveis que destacarão onde você está errado.

    
por Amias 13.05.2016 / 15:28