tcsh 6 выдает ошибку для кавычек

Я запускаю программное обеспечение, которое генерирует следующий скрипт.

#!/bin/tcsh -f
setenv 'CDS_LIC_FILE' '5280@sjflex5'
setenv 'LM_LICENSE_FILE' '[email protected]'

Это отлично работает на RedHat EE50.

На RedHat EE60 он не работает и выдает следующую ошибку.

setenv: Variable name must begin with a letter.

Я не контролирую процесс генерации скриптов и не могу изменить установку RedHat EE60 на целевой машине. Есть ли другой способ исправить это и заставить его работать?

Спасибо, Герт.


person Gert Gottschalk    schedule 24.06.2014    source источник
comment
Поскольку имена переменных среды не могут содержать специальные символы, нет необходимости заключать их в кавычки.   -  person Barmar    schedule 24.06.2014
comment
Скорее всего что-то изменилось между версиями tcsh 6.14.00 (которая принимает setenv 'foo' 'bar' и 6.18.00 (которая отклоняет его с setenv: Variable name must begin with a letter.   -  person Keith Thompson    schedule 24.06.2014
comment
@Barmar ОП не контролирует программу, которая создает кавычки.   -  person Peter - Reinstate Monica    schedule 24.06.2014
comment
Или псевдоним setenv (и выведите первый аргумент из кавычек перед вызовом setenv).   -  person Peter - Reinstate Monica    schedule 24.06.2014
comment
Изменение произошло между версиями 6.17.00 и 6.17.04. Запись в файле Fixes говорит 49. PR/113: Не позволяйте устанавливать недопустимые имена переменных. (Я не совсем подтвердил, что именно это и сделало это, но это кажется вероятным.)   -  person Keith Thompson    schedule 24.06.2014


Ответы (1)


Я не знаком с классами символов в регулярных выражениях, но вы поняли идею и можете добавить полноты и элегантности ;-):

software_that_generates_following_script \
  | sed "s/setenv[ \t]* '\([0-9A-Za-z_]*\)'/setenv \1/" \
  > generated_shell_script

Возможно, это поможет...

person Peter - Reinstate Monica    schedule 24.06.2014