Передача аргумента в комментарий в сценарии.sh

Для тех, кто прибывает сюда годы спустя, с 2017 года можно поместить все в файл конфигурации:

Host host_1
    HostName 1.2.3.4
    User root
    Port 22
    RequestTTY yes
    RemoteCommand zsh
3
17.09.2021, 09:10
1 ответ

Не думаю, что сможешь. Все строки, начинающиеся с #, игнорируются оболочкой, а строки $1и $2относятся к оболочке. Многие менеджеры заданий, в том числе slurm, имеют некоторые команды, которые записываются в виде комментариев оболочки, поэтому оболочка игнорирует их, но читает диспетчер заданий. Это ваша строка SBATCH:

#SBATCH --job-name=blabla

Таким образом, нет возможности сделать это динамически в рамках одного и того же скрипта. Однако вы можете сделать скрипт-оболочку, который делает это. Например:

#!/bin/sh
cat <<EoF
#!/bin/sh 
#
########## Begin Slurm header ##########
#
#SBATCH --job-name=blabla$1$2
#
########### End Slurm header ##########

# Load module
module load math/matlab/R2020a

# Start a Matlab program
matlab -nodesktop -r "program $1 $2"

exit
EoF

Если вы сейчас запустите этот скрипт с двумя параметрами, он распечатает нужный вам скрипт:

$ foo.sh param1 param2
#!/bin/sh 
#
########## Begin Slurm header ##########
#
#SBATCH --job-name=blablaparam1param2
#
########### End Slurm header ##########

# Load module
module load math/matlab/R2020a

# Start a Matlab program
matlab -nodesktop -r "program param1 param2"

exit

Так что можешь просто:

foo.sh param1 param2 > slurm_script.sh
3
17.09.2021, 10:23

Теги

Похожие вопросы