Мое решение немного отличается. Я пришел к вашему вопросу с помощью поиска Google в заголовке вашего вопроса, но я пытаюсь выполнить что-то другое. Вот в случае, если это кому-то поможет:
К вашему сведению, я использовал tcsh на Solaris.
У меня был следующий однострочный:
perl -e 'use POSIX qw(strftime); print strftime("%Y-%m-%d", localtime(time()-3600*24*2));'
который выводит значение:
2013-05-06
Я пытался поместить это в сценарий оболочки, чтобы я мог создать файл с датой в имени файла, из X числа дней в прошлом. Я попробовал:
set dateVariable=`perl -e 'use POSIX qw(strftime); print strftime("%Y-%m-%d", localtime(time()-3600*24*$numberOfDaysPrior));'`
Но это не сработало из-за подстановки переменных. Мне пришлось возиться с цитированием, чтобы заставить его правильно интерпретировать. Я пытался заключить весь лот в двойные кавычки, но это сделало команду Perl не синтаксически правильной, так как она путалась с двойными кавычками вокруг формата даты. Я закончил с:
set dateVariable=`perl -e "use POSIX qw(strftime); print strftime('%Y-%m-%d', localtime(time()-3600*24*$numberOfDaysPrior));"`
Это прекрасно сработало для меня, не прибегая к каким-либо необычным экспортам переменных.
Я понимаю, что это не совсем отвечает на ваш конкретный вопрос, но он ответил на заголовок и может помочь кому-то еще!