【发布时间】:2011-09-10 02:34:54
【问题描述】:
我正在使用服务器上的 PBS 队列。 我想自动提交几份工作 因此需要用路径替换变量。 由于不可能将论据放入 运行与队列一起运行的脚本,我想 替换通常使用的shell变量 带有硬编码参数。
我需要的是:
#! /bin/sh
#PBS -N runme_$file
#PBS -o $file.out
#PBS -e $file..err
#PBS -q batch
#PBS -j oe
#PBS -m abe
#PBS -r n
#PBS -l nodes=1:ppn=1
#PBS -l walltime=24:00:00
/home/example/proggie script $file $parameter2
echo "DONE"
用'/tmp/output'替换$file,所以应该转换成:
#! /bin/sh
#PBS -N runme_/tmp/output
#PBS -o /tmp/output.out
#PBS -e /tmp/output.err
#PBS -q batch
#PBS -j oe
#PBS -m abe
#PBS -r n
#PBS -l nodes=1:ppn=1
#PBS -l walltime=24:00:00
/home/example/proggie script /tmp/output $parameter2
/home/example2/proggie2 /tmp/output
echo "DONE"
PBS 部分很重要,因为它阻碍了参数的使用。 所以我不能只使用 $1 和 $2 并给脚本参数 它需要通过参数。相反,我必须通过 替换命令,然后我可以将它提交到排队系统。 我仍然希望能够从命令行使用脚本, 用于快速测试。
我已经尝试过使用sed,但是特殊字符的可能性 文件中发生的事情搞砸了一切。必须有更好的方法。
【问题讨论】:
-
您的问题还不清楚。为什么你回显但忽略
$1?替换$file的值来自哪里?$parameter2的值从何而来? PBS 在哪里运行;它似乎与问题完全相切? -
我把问题编辑得更清楚了。