微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将 bash 脚本的变量传递给另一个 bash 脚本以在队列上提交作业

如何解决将 bash 脚本的变量传递给另一个 bash 脚本以在队列上提交作业

我尝试从命令行读取我的文件、设备(GPU 或 cpu)以及向量的大小,然后针对所选设备,将带有该参数的作业脚本提交到特定 GPU 的队列中或 cpu。但是在将我的工作提交到队列后,当我验证我的脚本时:

bash job.sh

我发现 submitjob.sh 脚本中的参数文件、设备和大小没有传递到 job.sh 脚本。

你能帮我看看我的错误是什么吗?!

我的 submitjob.sh:

#!/bin/sh -f
echo "Input The File!";
read file
echo "Choose Gpu Or cpu!";
read device
echo "Input Vector Size!";
read size
echo
if [ "$device" = "Gpu" ]; then
qsub -I -l nodes=1:gen9:ppn=2 -d . ./job.sh file device size
else
qsub -I -l nodes=1:skl:ppn=2 -d . ./job.sh file device size
fi

我的job.sh:

#!/bin/bash

source /opt/intel/inteloneapi/setvars.sh

echo
echo start: $(date "+%y%m%d.%H%M%s.%3N")
echo
$file $device $size
echo
echo stop: $(date "+%y%m%d.%H%M%s.%3N")
echo

解决方法

您需要将 $ 放在 submitjob.sh 中的变量之前:

qsub -I -l nodes=1:gen9:ppn=2 -d . ./job.sh "$file" "$device" "$size"

然后在 job.sh 中,您从 $1$2 等中获取参数

#!/bin/bash

source /opt/intel/inteloneapi/setvars.sh
file=$1
device=$2
size=$3

echo
echo start: $(date "+%y%m%d.%H%M%S.%3N")
echo
"$file" "$device" "$size"
echo
echo stop: $(date "+%y%m%d.%H%M%S.%3N")
echo

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。