Меня смущает проблема со сценарием оболочки tcsh. (для работы нет выбора в оболочке, я застрял с ней)
Элементы enableThingN ниже — это переменные среды оболочки, установленные другими вещами перед запуском этого сценария csh с использованием оболочки tcsh. Здесь они вообще не устанавливаются в одном и том же сценарии, а только оцениваются здесь.
Сообщение об ошибке:
enableThing1: Undefined variable.
Код:
if ( ( $?enableThing1 && ($enableThing1 == 1) ) || \
( $?enableThing2 && ($enableThing2 == 1) ) || \
( $?enableThing3 && ($enableThing3 == 1) ) || \
( $?enableThing4 && ($enableThing4 == 1) ) ) then
set someScriptVar = FALSE
else
set someScriptVar = TRUE
endif
Итак, насколько я понимаю, первая часть большого условия if состоит в том, чтобы проверить, определен ли enableThing1 вообще или нет, используя магию $?enableThing1. Если он определен, то идем дальше и проверяем, что значение равно 1 или чему-то еще. Если он не определен, то пропустите часть ==1 проверки той же самой переменной оболочки и перейдите к тому, определен ли enableThing2 вообще или нет, и так далее.
Поскольку кажется, что я проверяю существование и намерен избежать проверки значения, если оно вообще не определено, где я ошибся?
Я искал здесь в stackoverflow и в Google в целом, но результатов мало, и я не получил ответа, например:
https://stackoverflow.com/questions/16975968/what-does-var-mean-in-csh