schlecht platziert ()'s Fehler auf einer tcl/tcsh gemischt Skript
Habe ich die Stilllegung Skript, dass beim start lief in tcsh und lief dann in tcl.
Ich bekomme die Fehlermeldung badly placed ()'s
und verstehe nicht, warum ich es bekommen.
#!/usr/intel/bin/tcsh -f
#\
set TCL_VERSION="8.4.6o_64"
#\
setenv WORK_AREA_ROOT_DIR .
#\
exec ${CAD_ROOT}/tcl/${TCL_VERSION}/bin/wishx "$0" "$*" &
lappend auto_path $env(KITE)/lib/pwidget
lappend auto_path $env(KITE)/local_cad/nlview/tcl/
lappend auto_path $env(KITE)/tcl/
lappend auto_path $env(KITE)/gui/tcl/plotter
lappend auto_path $env(KITE)/gui/tcl/graph-class
package require Pwidget+
package require Nlview
package require sparam_view_graph
package require BLT
namespace import -force ::blt::bgexec
source $env(KITE)/gui/tcl/sparam_view_env.tcl
source $env(KITE)/tcl/sparamParser.tcl
load $env(KITE)/lib/utils/libKitKiteUtilsTcl.so
source $env(KITE)/lib/utils/qbnamex.tcl
catch {delete object reg}
TclRegistry reg -varname _app
sparam_view_env "." $argv
Die Fehlermeldung erscheint nur, nachdem ich Sie ein Indiz dafür, dass tcl (wollen) begann zu laufen:
> bin/sparam_view_stand_alone.tcl /nfs/iil/proj/dt/epm16/work/imelam2/test/kite_check/kite/input/s2p/ISI_bit29.s2p
[1] 11474
Badly placed ()'s.
- Ich glaube nicht, dass das ein TCL-Problem, ist es wahrscheinlich eine tcsh Problem. Siehe hier zum Beispiel. Versuchen Sie, eine Unix-oder Shell-Programmierung-tag auf die Frage.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit einem
&
am Ende, so wird der TCL-interpreter auf das Skript, sondern hält die Ausführung in der csh. Denn was folgt, ist die syntax von TCL aber nicht csh, kann dies am Ende nicht Recht, und in der Tat csh beschwert sich, wenn er die Zeile erreicht, dielappend auto_path $env(KITE)/lib/pwidget
. Entfernen Sie die&
.Auch
"$*"
verkettet alle Argumente und übergibt Sie in ein einziges argument zuwishx
. Übergabe von Argumenten unverändert, machen Sie, dass${*:q}
. Auch, wenn diewishx
- interpreter ist nicht vorhanden für einige Grund, Sie sollten beenden Sie das Skript, anstatt halten Sie es ausgeführt haben innerhalb tcsh.Oh, und die Verwendung der Bourne-shell-syntax statt. Csh ist nicht eine sehr gute scripting-tool in den ersten Platz, und sogar für die interaktive Nutzung, tcsh noch übertroffen wurde durch das zsh seit den frühen 1990er Jahren und bash-gefangen in den späten 1990er Jahren. Sie finden viele unix-Systeme ohne csh heute, in der Erwägung, dass jedes unix-system hat eine Bourne-Stil-shell als
/bin/sh
, und Sie werden hart gedrückt, um einen finden, der ist so alt, dass es nicht verstehen"$@"
.