У меня есть следующие переменные:
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
Что я могу сделать для передачи переменных функции в""?
Необходимо использовать следующий формат кавычек:
$matlab "func('$path/$file')"
Замена $matlab
с echo
(выполняемый на ударе GNU, версии 4.3.46) заканчиваются с:
$ echo "func('$path/$file')"
func('/home/username/files/document.mat')