Нужно ли экранировать символы в этой строке MATLAB? - PullRequest
2 голосов
/ 12 января 2010

Я хотел бы вызвать следующую команду bash в MATLAB:

grep "Up to" ~/test_linux/vision1.1/log | awk '{print $7}'

Я использую system() в MATLAB, но оказывается, что есть ошибки:

>> [status string]=system('grep "Up to" ~/test_linux/vision1.1/log | awk '{print $7}' ');     
??? [status string]=system('grep "Up to" ~/test_linux/vision1.1/log | awk '{print $7}' ');  

Error: Unbalanced or unexpected parenthesis or bracket.

Нужно ли экранировать некоторые специальные символы в команде bash в виде строки в MATLAB?

Ответы [ 2 ]

13 голосов
/ 12 января 2010

Это должно работать:

[status string]=system('grep "Up to" ~/test_linux/vision1.1/log | awk ''{print $7}'' ');

Вы должны экранировать ' с другим ', если хотите, чтобы он отображался в виде символа в строке. Что касается обработки строк в MATLAB , ' является единственным символом с особым значением (он начинает и заканчивает строку), поэтому он является единственным, который нуждается в экранировании.

Предостережение: Некоторые функции могут интерпретировать свои строковые аргументы по-разному и, следовательно, требуют, чтобы определенные символы экранировались по-разному. Эти требования появятся в документации для каждой функции. Несколько таких типов функций в моей голове:

2 голосов
/ 12 января 2010

Вам нужно будет экранировать одинарные кавычки в командной строке. В противном случае MATLAB интерпретирует их как конец строки, а затем разбивает на материал, следующий за ним.

...