Неверное присвоение переменной bash

У меня есть два сценария, а именно 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}"

Фрагмент из 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 Программа, чтобы увидеть, где я иду не так. Но это также не указывает на мою ошибку. Буду признателен, если кто-нибудь укажет мне правильное направление.

3
задан 13 May 2016 в 17:42

2 ответа

попробуйте вместо этого

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, но можно избавиться от питания заключения в кавычки.

5
ответ дан 14 May 2016 в 03:42
  • 1
    Оказывается, что можно просто сделать xdotool getactivewindow windowminimize, никакая потребность знать число окна.. – Aurimas 26 October 2017 в 07:25

попытайтесь запустить свои скрипты через explaination режим-x

bash -x install.sh 

удара, который Это покажет возвращаемым значениям команд и содержанию переменных, которые выделятся, где Вы идете не так, как надо.

2
ответ дан 14 May 2016 в 03:42
  • 1
    Интересный... рассмотрение, что измененный 4.13.x ядро Вы обновили до в Вашем переходе от 16,04 до 17,10, является тем же на установочном диске. Ну, если это происходит снова, по крайней мере, Вы знаете, что сделать помещение в черный список затронутого модуля во время начальной загрузки. Рассмотрение Вас закончилось с повторной полноценной паникой ядра, I' m любопытный, останется ли Ваша система ' fixed'. – Nicholas Stommel 28 November 2017 в 14:02

Другие вопросы по тегам:

Похожие вопросы: