переменная среды csh выполнить

Я создаю командную строку в переменной оболочки tcsh, что-то вроде

set cmd  = "/usr/local/bin/rsync "
set parm = "--verbose --acls --times --links "
set src  = "/spindle/to\ be\ backed-up "
set dest = "/mnt/backup21 "

set final = "$cmd $parm $src $dest"

$final

и я бы хотел, чтобы последняя строка выполняла команду. Я могу заставить это выполнить, но всегда с ошибкой

rsync: link_stat "/spindle/to\" failed: No such file or directory (2)

Кажется, он неправильно видит пространство на пути. Я пробовал несколько \ в этой строке, но все равно не сработало. Предложения?


person user3187848    schedule 12.01.2014    source источник
comment
Это не переменная окружения, это просто переменная оболочки. Переменные среды устанавливаются с помощью setenv.   -  person Keith Thompson    schedule 13.01.2014


Ответы (1)


Во-первых, я бы серьезно подумал о том, чтобы найти другой способ сделать это. csh считается плохой оболочкой для программирования; см. классическую статью Csh-программирование считается вредным. Я использую csh и tcsh больше десятилетий, чем я могу признаться, и мне все еще приходится прибегать к методам проб и ошибок, чтобы отвечать на подобные вопросы.

Но что касается вашего непосредственного вопроса, eval, похоже, работает. Заменить строку

$final

by

eval $final
person Keith Thompson    schedule 12.01.2014