尝试使用 Sun Grid Engine 找出 bash 脚本
Trying to figure out bash scripting with Sun Grid Engine
我正在尝试在 bash 脚本中使用整数变量提交给 Sun Grid Engine(使用 qsub)。
有人可以澄清为什么这不起作用吗?
NUMCORES=32
#$ -pe mpi $NUMCORES
(给出错误“由于错误无法读取脚本文件:数值无效!
字符串“$NUMCORES”的初始部分不包含小数)
但是这样做:
#$ -pe mpi 32
我看过一些涉及 awk 或 bc 但似乎无法使它们工作的解决方案。显然我是 bash 脚本编写的新手 - 感谢您的帮助!
bash 脚本中的字符 #
表示注释。因此,在 #$ -pe mpi $NUMCORES
行中,不会使用环境变量 NUMCORES
的值,因为它是注释。
然而,这些注释对于将参数传递给 qsub
命令很有用。例如,参见 the man page and these examples。注意这些参数可以在命令行传递:
qsub -pe mpi 32 myjob.sh
另一种方法是在 qsub 之前使用命令生成作业。假设作业脚本 jobgeneric.sh
是:
#!/bin/bash
#$ -N useless
#$ -cwd
#$ -pe mpi $NUMCORES
#$ -l h_vmem=6G
echo 42
让我们使用sed
command替换环境变量并创建一个新文件job.sh
:
export NUMCORES=32
sed 's/$NUMCORES/'$NUMCORES'/g' jobgeneric.sh > job.sh
cat job.sh
另见 Environment variable substitution in sed。结果是:
#!/bin/bash
#$ -N useless
#$ -cwd
#$ -pe mpi 32
#$ -l h_vmem=6G
echo 42
现在可以使用 qsub job.sh
!
提交作业
我正在尝试在 bash 脚本中使用整数变量提交给 Sun Grid Engine(使用 qsub)。 有人可以澄清为什么这不起作用吗?
NUMCORES=32
#$ -pe mpi $NUMCORES
(给出错误“由于错误无法读取脚本文件:数值无效! 字符串“$NUMCORES”的初始部分不包含小数)
但是这样做:
#$ -pe mpi 32
我看过一些涉及 awk 或 bc 但似乎无法使它们工作的解决方案。显然我是 bash 脚本编写的新手 - 感谢您的帮助!
bash 脚本中的字符 #
表示注释。因此,在 #$ -pe mpi $NUMCORES
行中,不会使用环境变量 NUMCORES
的值,因为它是注释。
然而,这些注释对于将参数传递给 qsub
命令很有用。例如,参见 the man page and these examples。注意这些参数可以在命令行传递:
qsub -pe mpi 32 myjob.sh
另一种方法是在 qsub 之前使用命令生成作业。假设作业脚本 jobgeneric.sh
是:
#!/bin/bash
#$ -N useless
#$ -cwd
#$ -pe mpi $NUMCORES
#$ -l h_vmem=6G
echo 42
让我们使用sed
command替换环境变量并创建一个新文件job.sh
:
export NUMCORES=32
sed 's/$NUMCORES/'$NUMCORES'/g' jobgeneric.sh > job.sh
cat job.sh
另见 Environment variable substitution in sed。结果是:
#!/bin/bash
#$ -N useless
#$ -cwd
#$ -pe mpi 32
#$ -l h_vmem=6G
echo 42
现在可以使用 qsub job.sh
!