Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix tcl/tcsh混合脚本中放置错误()_Unix_Tcl_Tcsh - Fatal编程技术网

Unix tcl/tcsh混合脚本中放置错误()

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

我有一个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" "$*" &

    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