Как ссылаться на переменные matlab в команде unix в командной строке matlab? - PullRequest
0 голосов
/ 04 марта 2020

Фон

У меня есть переменная с именем bridgeRoot, определенная следующим образом:

/over/the/river/and/through/the/woods

Этот каталог имеет следующие подкаталоги:

/logs
/txt
/bins

В командной строке matlab, когда я набираю bridgeRoot, я получаю значение переменной соответствующим образом:

>> bridgeRoot

bridgeRoot = 

/over/the/river/and/through/the/woods

Однако, когда я пытаюсь cd перейти в подкаталог, я получаю следующую ошибку

>> command = 'cd bridgeRoot/logs'

>> system(command)

Error bridgeRoot/logs: No such file or directory

status = 1

Это работает, когда выполняется как часть сценария Matlab, но по какой-то причине происходит сбой в командной строке.

Вопрос

Как правильно ссылаться на Matlab переменные при вызове команды unix в командной строке matlab?

Ответы [ 2 ]

3 голосов
/ 04 марта 2020

Должно быть command = ['cd ' bridgeRoot '/logs'], чтобы использовать содержимое вашей переменной bridgeRoot вместо текста 'bridge Root'.

2 голосов
/ 04 марта 2020

Вы используете >> command = 'cd bridgeRoot/logs', таким образом, это строка, которая никогда не интерпретируется. Лучший способ объединить две части пути - использовать команду fullfile. Кроме того, я не уверен, хотите ли вы вызвать функцию Matlab cd или команду os. Для функции matlab:

cd(fullfile(bridgeRoot,'logs'))

для команды os:

system(['cd ',fullfile(bridgeRoot,'logs')])

Последнее будет иметь смысл только после добавления дополнительных команд. cd только изменяет рабочий каталог для других команд в этом вызове системы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...