
Ich versuche, über das Terminal ein Skript mit Tcl-Code namens auszuführen myscript.tcl
. Gemäß dem von mir verwendeten Tutorial soll ich chmod +x myscript.tcl
den Code eingeben und dann mit ausführen ./myscript.tcl
. Beachten Sie, dass ich dem Tcl-Skript #!/home/localadmin/Desktop
gemäß dem Tutorial auch Folgendes hinzugefügt habe. Bei der Ausführung erhalte ich jedoch den Fehler Invalid Operation
. Warum tritt dies auf und wie kann ich es beheben?
Genauer Fehler:E: Invalid operation ./myscript.tcl
Link zum Tutorial:https://www.youtube.com/watch?v=U5m_vuBzdZE&list=PL7616FA0112D74AD3&index=2, siehe 1:10
Der Code :
#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
Nachverfolgen:
Ein weiteres Skript, das ich habe -
#!/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"]
Erzeugt den gleichen Fehler: E: Invalid operation ./lesson3.tcl
. Ich habe dasselbe verwendet shebang
, das ich in dieser neuen Datei im Originalbeitrag gefunden habe, und es hat das Problem behoben. Allerdings tritt beim Versuch, diese neue Datei auszuführen, immer noch der gleiche Fehler auf.
Antwort1
Ich vermute, der Grund, warum Ihr Skript nicht ausgeführt wird, ist, dass Ihr Skript shebang
völlig falsch ist. Der Sinn des Skripts shebang
besteht darin, dem Compiler mitzuteilen, mit welchem Paket oder Programm das Skript ausgeführt werden soll. Es #!/home/localadmin/Desktop
verweist auf nichts, was den Compiler interessiert (nehme ich an).
Alles andere sieht bisher richtig aus (auch hier bin ich nicht vertraut mit tcl
). Ich würde also versuchen, die erste Zeile im Skript in etwa wie folgt zu ändern
myscript.tcl
#!/usr/bin/tclsh
my_script.....
Falls dies nicht funktioniert, können Sie alle Fehler, die die Ausführung des Skripts verhindern würden (wie Syntaxfehler und dergleichen), aufspüren, indem Sie
tclsh your_script.tcl
Nach dem Ansehen des Videos ist dieses Tutorial für Sie nicht relevant (vorausgesetzt, Sie verwenden wirklich Ubuntu), um das Skript auszuführen