美元符号在我的shell脚本中获取不起作用的值?

时间:2014-07-04 01:32:29

标签: sbatch

我们学校使用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的值。

1 个答案:

答案 0 :(得分:0)

$(( … ))是算术评估上下文。由于NO_CORES是一个整数,并且在语法中没有对其进行其他操作,因此结果是NO_CORES扩展的值。但是如果你知道参数是一个整数,你可以使用正常的扩展:

NO_CORES=10
SBATCH -n $NO_CORES # -> SBATCH -n 10