Bash 有没有一种方法可以同时使用qsub和source?
我编写了一个shell脚本来分别处理一堆文件,如下所示Bash 有没有一种方法可以同时使用qsub和source?,bash,shell,qsub,Bash,Shell,Qsub,我编写了一个shell脚本来分别处理一堆文件,如下所示 #!/bin/bash #set parameters (I have many) ... #find the files and do iteratively for File in $FileList; do source MyProcessing.sh done MyProcessing.sh是调用脚本,主脚本中的变量和函数用于调用脚本 现在我想将shell脚本移动到集群,并在迭代中使用qsub。我试过了 #find t
#!/bin/bash
#set parameters (I have many)
...
#find the files and do iteratively
for File in $FileList; do
source MyProcessing.sh
done
MyProcessing.sh
是调用脚本,主脚本中的变量和函数用于调用脚本
现在我想将shell脚本移动到集群,并在迭代中使用qsub
。我试过了
#find the files and do iteratively
for File in $FileList; do
echo "source MyProcessing.sh" | qsub
done
但它不是这样工作的。有人能帮忙吗?提前感谢。变量和函数是脚本的本地变量和函数。这意味着
sourcemyprocessing.sh
可以工作,但bash MyProcessing.sh
不能。第二种语法创建一个子shell,这意味着新的Unix进程和Unix进程是隔离的
同样的情况也适用于qsub
,因为您通过管道调用它:BASH将创建一个新进程qsub
,并将stdin设置为source MyProcessing.sh
。它只将这23个字节传递给qsub
,而不传递其他内容
如果您希望这样做,那么您必须编写一个100%独立于主脚本的新脚本(即,它不能使用任何变量或函数)。然后,您必须阅读qsub
的文档以了解如何设置它。通常,只有在集群的每个节点上分发了MyProcessing.sh
的副本后,这样的工具才会起作用
此外,该工具可能不会尝试找出脚本需要的其他数据,因此您还必须将文件复制到集群节点(可能是将它们放在共享文件系统上)。变量和函数是脚本的本地变量和函数。这意味着
sourcemyprocessing.sh
可以工作,但bash MyProcessing.sh
不能。第二种语法创建一个子shell,这意味着新的Unix进程和Unix进程是隔离的
同样的情况也适用于qsub
,因为您通过管道调用它:BASH将创建一个新进程qsub
,并将stdin设置为source MyProcessing.sh
。它只将这23个字节传递给qsub
,而不传递其他内容
如果您希望这样做,那么您必须编写一个100%独立于主脚本的新脚本(即,它不能使用任何变量或函数)。然后,您必须阅读qsub
的文档以了解如何设置它。通常,只有在集群的每个节点上分发了MyProcessing.sh
的副本后,这样的工具才会起作用
此外,该工具可能不会尝试找出脚本需要的其他数据,因此您还必须将文件复制到群集节点(可能是将它们放在共享文件系统上)。使用:
(set; echo "source MyProcessing.sh") | qsub
您需要在qsub
shell中设置当前变量。使用:
(set; echo "source MyProcessing.sh") | qsub
您需要在
qsub
shell中设置当前变量。qsub用于在网格上执行shell脚本。以前从未听说过。你用什么产品?什么样的网格?@Aarondigula:qsub来自SGE@IgorChubin:什么是SGE?@Aarondigula:SUN Grid Engineqsub用于在网格上执行shell脚本。以前从未听说过。你用什么产品?什么样的网格?@Aarondigula:qsub来自SGE@IgorChubin:什么是SGE?@Aarondigula:太阳栅格引擎