Синтаксическая ошибка .bashrc: неожиданный конец файла

Я не знаю, доступна ли правильная версия scp в MinGW, но вы можете использовать -3 вариант:

man scp

[...]

-3 Copies between two remote hosts are transferred through the local host. Without this option the data is copied directly between the two remote hosts. Note that this option disables the progress meter.

[...]

-3
15.07.2019, 11:40
2 ответа

В bash нет endif. Оператор ifзаканчивается fi. Кроме того, при использовании тестовой конструкции [ ]вам нужен пробел вокруг [. Оператор сопоставления регулярных выражений =~требует специального [[ ]]bash вместо POSIX [ ], и чтобы отменить совпадение, вы отрицаете весь тест ([[ ! foo ~ bar ]]), вы не можете использовать !~. Кроме того, для этого требуется регулярное выражение, а не глобус оболочки. Так что *ничего не значит само по себе, вам нужно .*для "любого символа". Затем формат для установки и экспорта переменной — export foo=bar, а также у вас есть случайный ?между $и LD_LIBRARY_PATH. Так что попробуй это:

if [ "1" == "$LD_LIBRARY_PATH" ]; then
    if [[ ! "$LD_LIBRARY_PATH" =~.*/usr/local/iscir/lib.* ]]; then
        export LD_LIBRARY_PATH="/usr/local/iscir/lib:$LD_LIBRARY_PATH"
    fi
else
    export LD_LIBRARY_PATH="/usr/local/iscir/lib"
fi

Это должно сработать, но все это не имеет смысла. Когда LD_LIBRARY_PATHбудет 1? Я действительно не понимаю, как это когда-либо будет выполнено. Если все, что вы хотите сделать, это добавить /usr/local/iscir/libк LD_LIBRARY_PATH, если его там еще нет, вам просто нужно это:

if [ -z "$LD_LIBRARY_PATH" ]; then
    export LD_LIBRARY_PATH="/usr/local/iscir/lib"
elif [[ ! "$LD_LIBRARY_PATH" == */usr/local/iscir/lib* ]]; then
    export LD_LIBRARY_PATH="/usr/local/iscir/lib:$LD_LIBRARY_PATH"
fi
5
28.01.2020, 05:18

Если вы хотите отредактировать:

  • Команда [требует места с обеих сторон, как и все другие команды
  • Оператор сравнения =~не является частью test. Вместо этого вам нужна команда [[.
  • У вас отсутствует знак =при установке значения экспорта (дважды)
  • Ваш тест "1" == "$?LD_LIBRARY_PATH"всегда будет ложным

Если вы просто хотите расширить путь, если он еще не содержит расширения, вы можете использовать это вместо этого:

case "$LD_LIBRARY_PATH" in
    */usr/local/iscir/lib*);;
    *)
        export LD_LIBRARY_PATH=/usr/local/iscir/lib:"$LD_LIBRARY_PATH"
        ;;
esac
0
28.01.2020, 05:18

Теги

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