引号-Inception

引号-Inception

我有以下变量:

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')

相关内容