Cotação Mark-Inception

0

Eu tenho as seguintes variáveis:

file=document.mat
path=~/files

Agora, eu quero chamar a função matlab func () (não se preocupe se você não conhece o Matlab, realmente não importa). A função toma como argumento de entrada um arquivo entre aspas, assim:

func("/path_to_file/file.extension")

ou

func('/path_to_file/file.extension')

No entanto, chamando a função do terminal, eu tenho que definir a própria função entre aspas duplas:

$matlab "func('/path_to_file/file.extension')"

(Para visibilidade, omitimos algumas opções de comando, como -nosplash -r ).

Agora, o argumento da função func deve ser uma variável (por razões), então eu quero substituir /path_to_file/file.extension by $path/$file . É aí que surge o problema:

$matlab "func("$path/$file")"

Isso não funciona por razões óbvias.

$matlab "func('$path/$file')"

Isso não funciona porque as aspas simples suprimem a extensão da variável.

$matlab "func('$path/$file')"
bash:~/files/document.mat: Permission denied

O que eu posso fazer para passar variáveis para a função dentro de ""?

    
por AlphaOmega 27.04.2017 / 10:28

1 resposta

0

Você deve usar o seguinte formato de citações:

$matlab "func('$path/$file')"

Substituindo $matlab por echo (executado no bash GNU, versão 4.3.46) resulta com:

$ echo  "func('$path/$file')"
func('/home/username/files/document.mat')
    
por Yaron 27.04.2017 / 10:31