LINUX.ORG.RU

Tcl. каррирование. как писать скрипты?=)

 


0

2

Доброго времени суток!

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

1) пишу скрипт, который, собственно, и делает основную работу:

if { $argc != 3 } {

puts "The do_hsi.tcl script requires variables in the next format:"

puts "do_hsi.tcl <hw_design.hdf> <device-tree-xlnx-dir> <output>

} 
else
{

puts [lindex $argv 0] 
puts [lindex $argv 1] 
puts [lindex $argv 2] 
open_hw_design [lindex $argv 0] 

set_repo_path [lindex $argv 1] 

create_sw_design device-tree -os device_tree -proc ps7_cortexa9_0

generate_target -dir [lindex $argv 2] 

puts "All operations successfull"

exit

}

2) создаю вспомогательный скрипт, который передаю уже программе:

source ./do_hsi.tcl ./base_zynq_design_wrapper.hdf ./device-tree-xlnx ./tmp
hsi -source ./hsi_all.tcl

На данном этапе вылазит ошибка: ERROR: [Common 17-165] Too many positional options when parsing './tmp`'

ЧЯДНТ?

★★
Ответ на: комментарий от tailgunner

да такой же, как был выше.

Но кажись сделал, хоть и криво:

set a ./base_zynq_design_wrapper.hdf
set b ./device-tree-xlnx
set c ./tmp
source ./do_hsi.tcl  

do_hsi.tcl :

open_hw_design $a

set_repo_path $b

create_sw_design device-tree -os device_tree -proc ps7_cortexa9_0

generate_target -dir $c

puts "All operations successfull"

exit

aido ★★
() автор топика
Ответ на: комментарий от aido

да такой же, как был выше.

В том, который был выше, не закрыта кавычка:

puts "do_hsi.tcl <hw_design.hdf> <device-tree-xlnx-dir> <output>
tailgunner ★★★★★
()

ж

У тебя else на отдельной строке. Так нельзя же, в тикле else просто строка, передаваемая команде if. Хотя ошибка не о том.

anonymous
()
Ответ на: ж от anonymous
if { cond } {
   ...
} else {
   ...
}

Вот единственно возможная многострочная форма. На самом деле для тикля это одна строка. Он понимает только линейный список команд.

anonymous
()
Ответ на: комментарий от anonymous

Вот единственно возможная многострочная форма.

При желании можно поставить \ в конце строки, но лучше конечно как ты написал.

Xenius ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.