У меня есть файл, содержащий набор команд setenv (созданный из другого скрипта).
a.csh
setenv XYZ "${ABC} ab"
setenv PQR "test"
Затем я запускаю source a.csh
в терминале Linux.
Но если переменная $ABC не установлена, источник выдает ошибку с неопределенной переменной ABC и завершает работу, не выполняя следующий набор команд в a.csh (например, setenv PQR "test"
).
Я хочу продолжить выполнение этого набора команд после setenv XYZ "${ABC} ab"
.
Я попытался добавить перенаправление ошибок для команды setenv, но это не сработало.
setenv XYZ "${ABC} ab" 2 > /dev/null
Я обнаружил, что ошибку исходной команды можно поймать с помощью
source a.csh & echo $?
Но это будет игнорировать команды в файле, которые следуют за командой с ошибкой, поскольку она завершает команду при обнаружении ошибки.
Это небольшой пример того, как выглядит мой файл csh. Но он может содержать длинный список setenvs.
Проверить, существует ли $ABC, а затем запустить setenv невозможно.