首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从包含bsub命令tcl脚本、csh脚本运行csh脚本?

如何从包含bsub命令tcl脚本、csh脚本运行csh脚本?
EN

Stack Overflow用户
提问于 2021-04-21 13:44:48
回答 1查看 69关注 0票数 0

我正在尝试在tcl脚本中运行csh脚本。csh脚本中包含bsub命令。当我尝试运行脚本时,它错误地说bsub: Command not found。

脚本样本:

代码语言:javascript
复制
exec cp -r x  ../                           
cd ../../my_area                          
exec cp -r y ../../                           
cd ../../my_scripts                 
exec /bin/csh/  aim.csh  >@stdout 2>@stderr                   
# also tried set hd aim.csh , exec /bin/csh $hd >@stdout 2>@stderr}

aim.csh的详细信息

代码语言:javascript
复制
setenv IDC $d                                                
setenv LGH $f                                          
set error   $e                                                
bsub -q normal  -db  <path>  
EN

回答 1

Stack Overflow用户

发布于 2021-04-21 18:44:18

调用脚本的正确方式如下所示:

代码语言:javascript
复制
exec /bin/csh aim.csh >@stdout 2>@stderr

在运行之前,您可能希望确保aim.csh文件存在。在任何cd调用之后执行此操作非常重要;这会改变代码查找aim.csh的位置。

如果您遇到bsub不在可执行文件搜索路径上的问题,那么这完全不是Tcl和csh的错。(我不知道它会在哪里,也记不清哪个包提供了它。)如果需要,可以从Tcl代码扩展可执行文件搜索路径:

代码语言:javascript
复制
# Before calling exec; after is too late
append env(PATH) :/path/to/directory

例如,如果bsub实际上是/opt/local/somewhere/bin/bsub,那么您应该这样做:

代码语言:javascript
复制
append env(PATH) :/opt/local/somewhere/bin

要做到这一点,一种真正合适的方法是使用以下过程:

代码语言:javascript
复制
proc addToPath {directory} {
    global env tcl_platform
    if {[file type $directory] ne "directory"} {
        error "must pass a directory name"
    }
    append env(PATH) $tcl_platform(pathSeparator) [file nativename $directory]
    return
}

addToPath /opt/local/somewhere/bin

但是对于不可移植的代码,简单的append已经足够好了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67189897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档