Я немного смущен exec
и eval
в Tcl. В следующем примере:tcl: eval и exec confusing point
set cmd "mkdir new_folder";
exec $cmd
не работает с сообщением об ошибке: couldn't execute "mkdir new_folder" no such file or directory.
и eval
работает
set cmd "mkdir new_folder";
eval exec $cmd
Я также попробовал этот путь:
set cmd_1 "mkdir";
set cmd_2 "new_folder"
exec $cmd_1 $cmd_2
Он также работает Что ж. так в чем причина?
Хорошо, я знаю, что знаю причину. Первая программа не удалась, поскольку она рассматривает 'mkdir new_folder' как программу для вызова, поскольку она помещается внутри одной строки; и вторая программа работает, поскольку 'eval' concat следующую часть в список команд; и третий работает, так как я передаю две разделенные строки в 'exec'. –
Если вы просто создаете каталоги, проверьте 'файл mkdir' ... –