В 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