我有一個 SLURM 作業腳本,如下所示:
#!/bin/bash
#SBATCH -o ./out/%x.%j.%N.out
#SBATCH -e ./out/%x.%j.%N.err
#SBATCH -D ./
#SBATCH -J matlab_serial_batch_job
#SBATCH --nodes=1
#SBATCH --tasks-per-node=1
#SBATCH --cpus-per-task=1
#SBATCH --time=0:30:00
module load slurm_setup
module load matlab/R2021a-generic
NROWA=1000
NCOLA=2000
NROWB=2000
NCOLB=5000
MYSTRING='blablabla'
# Run MATLAB
matlab -nodisplay -singleCompThread \
-r "matmul_serial([$NROWA $NCOLA], [$NROWB $NCOLB], $MYSTRING);"
如您所見,我想設定一個字串變數并將其傳遞MYSTRING給 MATLAB 函式matmul_serial。但是,我收到以下錯誤:
Unrecognized function or variable 'blablabla'
對于那些整數變數NROWA、和NROWB,它們作業得很好。在這種情況下,如何正確設定和傳遞字串變數?NCOLANCOLBMYSTRING
uj5u.com熱心網友回復:
實際上,單引號將在賦值期間被 Bash 條帶化。
? MYSTRING='blablabla'
? echo $MYSTRING
blablabla
您可以嘗試轉義這樣的引號:
? MYSTRING=\'blablabla\'
? echo $MYSTRING
'blablabla'
否則,Matlab 會錯誤地認為blablabla是變數或函式的名稱,而不是字串文字。該錯誤訊息具有誤導性,因為它在 . 周圍添加了一個單引號blablabla。但這些單引號不是您在MYSTRING=...作業中插入的單引號,如下面的互動式 Matlab 會話所示。
$ matlab
MATLAB is selecting SOFTWARE OPENGL rendering.
< M A T L A B (R) >
Copyright 1984-2019 The MathWorks, Inc.
R2019a (9.6.0.1072779) 64-bit (glnxa64)
March 8, 2019
To get started, type doc.
For product information, visit www.mathworks.com.
>> blablabla
Undefined function or variable 'blablabla'.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/432870.html
