Я пишу несколько сценариев bash, чтобы упростить отправку заданий в вычислительный кластер с использованием oar синтаксиса , и для нужной мне опции говорят, что они используют синтаксис SQL (опция -p).
Для некоторого контекста, вот команда, которую я использую:
oarsub -q production -p "GPU = 'GTX 980'" -l "nodes=1,walltime=00:05" -I
Где я хочу иметь возможность изменять GTX 980 и 00:05 с заданными входамипользователем.
Я добился успеха, просто взяв время в качестве входа и оставив фиксированный графический процессор:
oarsub -q production -p "GPU = 'GTX 980'" -l "nodes=1,walltime=$1" -I
Я уже пробовал использовать двойные кавычки в качествеуказано в этих ответах 1 , 2 , 3 .Но похоже, что расширение параметров происходит следующим образом:
echo "$2"
oarsub -q production -p "GPU = "$2"" -l "nodes=1,walltime=$1" -I
manuel@machine$: bash job_script.sh 00:05 'GTX 980'
GTX 980
...
/!\ You asked for an Interactive job SO I will ignore arguments: 980 ; Is your syntax right?
...
[ADMISSION RULE] Job properties : (GPU = GTX) AND maintenance = 'NO'
Generate a job key...
Bad resource request (ERROR: column "gtx" does not exist
LINE 4: ...alltime >= 300 OR max_walltime <= 0)) AND ((GPU = GTX) AND m...
Там, где кажется, что он не берет весь 'GTX 980' как завершенную строку, а вместо этого разделяет их на 'GTX'и' 980 'из-за предупреждения: /!\ You asked for an Interactive job SO I will ignore arguments: 980 ; Is your syntax right?
.
Это способ передать имя GPU в качестве входного аргумента bash для команды?Или может быть какая-то проблема между тем, как bash
форматирует и передает ввод в oarsub
?