====== Tcl switch tips ======
This page is part of the Tcl/Tk page of the Airplug documentation.\\
[[en:doc:pub:tcltk:start|Back to the Tcl/Tk page]] /
[[en:doc:summary|Back to Airplug documentation page]].
---
The following tcl shell script named for instance ''switch.tcl'' will not give the expected result when using ''./switch.tcl toto'' while this will be ok with ''./switch.tcl tutu.
#!/usr/bin/tclsh
set stored "toto"
set input $argv
switch -- $input {
$stored {
puts stdout "The argument is equal to variable stored (=$stored)."
} \
"tutu" {
puts stdout "The argument is equal to string \"tutu\"."
} \
default {
puts stdout "default case, the argument is not equal to variable stored nor to string \"tutu\"."
}
}
ducourth@mouette:~/SRC/TCL$ ./switch.tcl tutu
The argument is equal to string "tutu".
ducourth@mouette:~/SRC/TCL$ ./switch.tcl toto
default case, the argument is not equal to variable stored nor to string "tutu".
This is because the global { } just after the switch prevent any variable replacement and the input will not be compared to "toto" but to "$stored". Instead, the switch statement should be written as follows:
#!/usr/bin/tclsh
set stored "toto"
set input $argv
switch -- $input \
$stored {
puts stdout "The argument is equal to variable stored (=$stored)."
} \
"tutu" {
puts stdout "The argument is equal to string \"tutu\"."
} \
default {
puts stdout "default case, the argument is not equal to variable stored nor to string \"tutu\"."
}
$ ./switch.tcl tutu
The argument is equal to string "tutu".
$ ./switch.tcl toto
The argument is equal to variable stored (=toto).
$
----
This page is part of the Tcl/Tk page of the Airplug documentation.\\
[[en:doc:pub:tcltk:start|Back to the Tcl/Tk page]] /
[[en:doc:summary|Back to Airplug documentation page]].