如何解决$(dirname $PWD) 返回 null 或为空
我是 SBATCH 和 bash 的新手。我有一个简单的脚本来提交作业,我正在尝试获取当前工作目录的父目录。从文档看来, '$(dirname $PWD)' 是这样做的方法。但它总是返回 null 或为空。我尝试了非常不同的版本,例如'$(dirname '$PWD')' 或 $(dirname $PWD)。它们都导致 null。我怀疑缺少一些非常基本的东西。关于我应该检查什么以更好地解决或调试此问题的任何建议都会有所帮助。这是示例代码(简化)
#!/bin/bash
sbatch <<EOT
#!/bin/bash
#SBATCH --nodes=1
#SBATCH --cpus-per-task=$2
#SBATCH --partition=express
#SBATCH --time=01:00:00
#SBATCH --mem-per-cpu=4G
#SBATCH --output=$1_%A_%a.out
#SBATCH --array=0-4%5
#SBATCH --error=%A_$1_%a.err
#SBATCH --constraint=broadwell
PARENT_DIR="$(dirname $PWD)"
echo "Main directory for submit-test-express script is: $PARENT_DIR"
echo "Current drectory is: $PWD"
echo "Job array ID: $SLURM_ARRAY_JOB_ID,sub-job $SLURM_ARRAY_TASK_ID is running!"
python /path_to_code/code.py $1 $2 $3 $SLURM_ARRAY_TASK_ID /output_folder/ > output_file-$SLURM_ARRAY_JOB_ID-$SLURM_ARRAY_TASK_ID.out
EOT
代码封装在 EOT 中,以便可以从其他脚本传递参数。另请注意,第二个 echo 语句正确打印了当前工作目录。但是第一个 echo 语句返回空白。
解决方法
由于您使用的是 $PARENT_DIR
未转义,因此在将完整的 heredoc 传递给 sbatch 之前,您的变量会被评估,请尝试转义 $
,例如:\$PARENT_DIR
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。