我有以下变量:
file=document.mat
path=~/files
现在,我想调用 matlab 函数 func()(如果您不了解 Matlab 也不用担心,这其实并不重要)。该函数将引号中的文件作为输入参数,如下所示:
func("/path_to_file/file.extension")
或者
func('/path_to_file/file.extension')
但是,从终端调用该函数时,我必须将函数本身设置为双引号:
$matlab "func('/path_to_file/file.extension')"
(为了便于查看,省略了一些命令选项,例如-nosplash -r
)。
现在,函数 func 的参数必须是一个变量(出于某些原因),所以我想用 替换/path_to_file/file.extension
。$path/$file
这就是问题出现的地方:
$matlab "func("$path/$file")"
由于显而易见的原因,这不起作用。
$matlab "func('$path/$file')"
这不起作用,因为单引号抑制了变量扩展。
$matlab "func(`$path/$file`)"
bash:~/files/document.mat: Permission denied
我该怎么做才能将变量传递给“”内的函数?
答案1
您应该使用以下格式的引文:
$matlab "func('$path/$file')"
$matlab
用以下结果替换echo
(在 GNU bash,版本 4.3.46 上执行):
$ echo "func('$path/$file')"
func('/home/username/files/document.mat')