
Используя терминал, я пытаюсь выполнить скрипт, содержащий код tcl с именем myscript.tcl
. Согласно руководству, которому я следую, я должен ввести chmod +x myscript.tcl
и запустить код с помощью ./myscript.tcl
. Обратите внимание, в скрипте tcl я также добавил #!/home/localadmin/Desktop
в скрипт согласно руководству. Однако при выполнении я получаю ошибку Invalid Operation
. Почему это происходит и как это исправить?
Точная ошибка:E: Invalid operation ./myscript.tcl
Ссылка на урок:https://www.youtube.com/watch?v=U5m_vuBzdZE&list=PL7616FA0112D74AD3&index=2, см. 1:10
Код :
#variables set to integer will ALWAYS be integer, cannot assign strings
set x 3
set y 4
#$x means the value of x
#whatever happens after expr will take it as a mathematical expression
#whatever inside brackets is executed
set z [expr $x + $y]
#text is option for command label
#the . represents anything coming from main window after execution
label .sum -text "z is $z"
label .myname -text "My NAME is RAND PAUL"
incr z
label .increment -text "incrementing z -> $z"
#pack puts the previous labels on te main window
#without pack, will discard the labels
pack .myname .increment .sum
Следовать за:
У меня есть еще один сценарий -
#!/usr/bin/tclsh
#Lesson 3 tk/tcl lists
set to_do [list]
lappend to_do "name"
lappend to_do "is"
lappend to_do "bobby"
lappend to_do "jones"
set num [list 0 1 2 3 4 5 6 7 8 9 10 11]
puts $to_do
puts $num
puts "index 0 is [lindex $to_do 0]"
puts "index 3 is [lindex $to_do 3]"
puts "replacing one element..."
puts [lreplace $num 3 3 [list 30 40 50 60]]
puts "replacing a range of elements from index 3 till ndex 6 => other indexees from 4 till 6 will deleted"
puts [lreplace $num 3 6 [list 30 40 50 60]]
puts "inserting one element at index 1 (2nd element that is)..."
puts [linsert $num 1 "new list element"]
Выдает ту же ошибку: E: Invalid operation ./lesson3.tcl
Я использовал то же самое shebang
, что и в этом новом файле в исходном сообщении, и это исправило проблему, однако у меня все еще возникает та же ошибка при попытке запустить этот новый файл.
решение1
Я предполагаю, что причина, по которой ваш скрипт не работает, в том, что он shebang
полностью неправильный. Смысл в том, shebang
чтобы сообщить компилятору, какой пакет или программа должна запустить скрипт, #!/home/localadmin/Desktop
указывает на то, что компилятору все равно (я предполагаю)
Пока все остальное выглядит правильно (опять же, я не знаком с tcl
). Поэтому я бы попробовал изменить первую строку в скрипте на что-то вроде следующего:
мойскрипт.tcl
#!/usr/bin/tclsh
my_script.....
Если это не сработает, вы можете отследить любые ошибки, которые могут помешать запуску скрипта (например, синтаксические ошибки и т. п.), выполнив команду
tclsh your_script.tcl
После просмотра видео, это руководство не имеет к вам отношения (при условии, что вы действительно используете Ubuntu) в отношении того, как запустить скрипт.