Unix tcl/tcsh混合脚本中放置错误()
我有一个fallowing脚本,它首先在tcsh中运行,然后在tcl中运行。 我把错误放得很糟糕,不明白为什么会这样Unix tcl/tcsh混合脚本中放置错误(),unix,tcl,tcsh,Unix,Tcl,Tcsh,我有一个fallowing脚本,它首先在tcsh中运行,然后在tcl中运行。 我把错误放得很糟糕,不明白为什么会这样 #!/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" "$*" & lappen
#!/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
只有在得到tcl wish开始运行的指示后,才会出现错误消息:
> 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.
最后使用&执行脚本上的TCL解释器,但继续在csh中执行。因为接下来是TCL语法,而不是csh,所以这不能正确结束,事实上,csh在到达lappend auto_path$envKITE/lib/pwidget行时会抱怨。删除&
此外,$*还连接所有参数,并在单个参数中将它们传递给wishx。若要不改变传递参数,请使${*:q}。此外,如果由于某种原因wishx解释器不存在,您应该退出脚本,而不是在tcsh中继续执行它
exec "${CAD_ROOT}/tcl/${TCL_VERSION}/bin/wishx" "$0" ${*:q}
#\
exit 127
哦,并考虑使用Burne shell语法代替。即使在交互使用方面,自20世纪90年代初以来,tcsh已经被zsh超越,而bash则在90年代末迎头赶上。现在你会发现很多没有csh的unix系统,而每个unix系统都有一个Bourne风格的shell,如/bin/sh,你很难找到一个太旧而没有的
最后使用&执行脚本上的TCL解释器,但继续在csh中执行。因为接下来是TCL语法,而不是csh,所以这不能正确结束,事实上,csh在到达lappend auto_path$envKITE/lib/pwidget行时会抱怨。删除& 此外,$*还连接所有参数,并在单个参数中将它们传递给wishx。若要不改变传递参数,请使${*:q}。此外,如果由于某种原因wishx解释器不存在,您应该退出脚本,而不是在tcsh中继续执行它exec "${CAD_ROOT}/tcl/${TCL_VERSION}/bin/wishx" "$0" ${*:q}
#\
exit 127
哦,并考虑使用Burne shell语法代替。即使在交互使用方面,自20世纪90年代初以来,tcsh已经被zsh超越,而bash则在90年代末迎头赶上。现在你会发现很多没有csh的unix系统,而每个unix系统都有一个Bourne风格的shell,如/bin/sh,你很难找到一个太旧而没有的
我不认为这是TCL的问题,可能是tcsh的问题。例如,见。尝试在问题中添加Unix或Shell编程标记。我认为这不是TCL问题,可能是tcsh问题。例如,见。试着在这个问题上添加一个Unix或Shell编程标签。我认为这是一个很好的答案,直到你得到一点侮辱这是21世纪。。。。如果你能把这句话改得不那么高人一等,你的答案会更好。@BryanOakley我没有看到任何侮辱性的东西,但在这里,我已经扩展了为什么使用sh。这是一个更好的答案。我认为这是一个很好的答案,直到你确实受到一点侮辱的程度这是21世纪。。。。如果你能把这句话改得不那么高人一等,你的回答会更好。@BryanOakley我没有看到任何侮辱性的东西,但在这里,我已经详述了为什么要使用sh。这是一个更好的回答。
#!/bin/sh
#\
TCL_VERSION="8.4.6o_64"
#\
WORK_AREA_ROOT_DIR=.
#\
export WORK_AREA_ROOT_DIR
#\
exec "${CAD_ROOT}/tcl/${TCL_VERSION}/bin/wishx" "$0" "$@"
#\
exit