#linux #bash #c 11
Вопрос:
Я попытался прочитать свой файл, устройство (графический процессор или процессор) и размер моего вектора из командной строки, а затем в отношении выбранного устройства отправить сценарий задания с этими параметрами в очередь определенного графического процессора или процессора. Но после отправки моей работы в очередь, когда я проверяю свой сценарий, например:
баш 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
Комментарии:
1. Откуда можно
bash job.sh
было взять аргументы?2. на самом деле я хотел передать аргумент из сценария submitJob в job.sh
3. Аргументы сценария находятся в
"$@"
Ответ №1:
Вам нужно поставить $
перед переменными в 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
Комментарии:
1. Спасибо тебе, после баша submitJob.sh, когда я делаю удар job.sh это приводит к ошибке, которая заключается в том, что команда не найдена.
2. Проблема в том, что аргументы из submitJob не передаются на задание .sh
3. Строка
$file $device $size
пытается выполнить значение$file
как команду. Это то, что должно быть?