В TCL при передаче пути файла к процедуре одиночная косая черта обрабатывается как escape-символ, поэтому она удаляется во всех местах. Если я использую {} для передачи аргумента позже в процедуре, я не смогу преобразовать его обратно в обычный путь для любой операции замены. Функция разделения не корректно разделяет строку из фигурных скобок.
Испытания: я пытаюсь передать полный путь к файлу, содержащий одинарный и двойной слеш обратного слова (\), в процедуру tcl, чтобы заменить первую часть пути на другуюдорожка. Я попробовал следующее 1. Попытался передать путь общего каталога dir как результат: вся обратная косая черта пропала 2. Попытка отправить путь файла в виде фигурных скобок: строка передается как есть, но ее нельзя использовать в proc. Если я попытаюсь разделить путь, это даст странный результат. Расколы в случайных местах и случайные символы отсутствуют. 3. со вторым вариантом использования я также попытался разделить файл, но он по-прежнему дает тот же результат, что и в случае использования 2. 4. Также попробовал функцию разделения файлов, но он требует написания цикла for, поэтому я оставлю это в качестве обходного пути, но есть ли какая-нибудь простая процедура. или я делаю что-то не так?
Код:
proc modpath {strPath} {
puts "$strpath" REM result /HuL0GBMV4087.example.comyourPLMB419CATEnvDevPerVisulisationV6R2017.txt
}
set fDir "\\HuL0GBMV4087.example.com\yourPLM\B419\CATEnv\Dev\Per\Visulisation\V6R2017.txt"
modpath $fDir
Если я пассивирую фигурные скобки
proc modpath {strPath} {
puts "$strpath" REM result "//HuL0GBMV4087.example.com/yourPLM/B419/CATEnv/Dev/Per/Visulisation/V6R2017.txt"
set PathInfo [split $strCurrentCockpitPath "B419"]
puts "PathInfo : $PathInfo"
REM result PathInfo : {"//HuL0G} MV 087.example.com/yourPLM/ {} {} {} /CATEnv/Dev/Per/Visulisation/V6R20 7.txt\"
}
set fDir {"\\HuL0GBMV4087.example.com\yourPLM\B419\CATEnv\Dev\Per\Visulisation\V6R2017.txt"}
modpath $fDir
Я ожидаю, что смогу пройти через аругмент с помощью фигурных скобокФункция split должна работать правильно, чтобы получить нормальный вывод строки. Я пробовал также много вариантов с split, но не смог заставить его работать правильно.