我们学校使用SLURM作为排队系统,必须在其他命令之前指定一些“前导”。因此,在这种情况下,shell脚本通常以
开头#!/bin/bash
#SBATCH -n 10 # Number of cores requested
#SBATCH -N 1 # Ensure that all cores are on one machine
#SBATCH -p general # Partition to submit to
#SBATCH --mem-per-cpu=20000 # Memory per cpu in MB (see also --mem)
#SBATCH -o out # Standard out goes to this file
现在,我希望将我的核心编号作为常量,这有助于修改。我做了
#!/bin/bash
ZEROTH_PORT=50000
NO_CORES=10
#SBATCH -n $((NO_CORES)) # Number of cores requested
#SBATCH -N 1 # Ensure that all cores are on one machine
#SBATCH -p general # Partition to submit to
#SBATCH --mem-per-cpu=20000 # Memory per cpu in MB (see also --mem)
#SBATCH -o out # Standard out goes to this file
#SBATCH -n $((NO_CORES))
失败。作为shell脚本的完整新手,我不知道为什么$((NO_CORES))
返回NO_CORES
的值。
答案 0 :(得分:0)
$(( … ))
是算术评估上下文。由于NO_CORES
是一个整数,并且在语法中没有对其进行其他操作,因此结果是NO_CORES
扩展的值。但是如果你知道参数是一个整数,你可以使用正常的扩展:
NO_CORES=10
SBATCH -n $NO_CORES # -> SBATCH -n 10