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