Для тех, кто прибывает сюда годы спустя, с 2017 года можно поместить все в файл конфигурации:
Host host_1
HostName 1.2.3.4
User root
Port 22
RequestTTY yes
RemoteCommand zsh
Не думаю, что сможешь. Все строки, начинающиеся с #
, игнорируются оболочкой, а строки $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