【问题标题】:Do I need to escape characters in this MATLAB string?我需要转义这个 MATLAB 字符串中的字符吗?
【发布时间】:2011-01-03 22:48:33
【问题描述】:

我想在 MATLAB 中调用以下 bash 命令:

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

我在 MATLAB 中使用system(),结果发现有错误:

>> [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 中的字符串?

【问题讨论】:

    标签: bash matlab string system escaping


    【解决方案1】:

    这应该可行:

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

    如果你想让' 出现在字符串中,你必须用另一个' 转义它。关于处理strings in MATLAB'是唯一具有特殊含义的字符(它开始和结束字符串),所以它是唯一需要转义的字符。

    警告: 某些函数可能会以不同方式解释其字符串参数,因此需要以不同方式转义某些字符。这些要求将出现在每个功能的文档中。这些类型的函数中有几个是我脑海中浮现的:

    【讨论】:

    • 想知道 Matlab 中的转义字符是什么?它总是单引号吗?我记得在函数 printf() 中,它是 \.
    • @Tim:我在答案中添加了一些关于转义字符的更多细节。
    【解决方案2】:

    您需要转义命令字符串中的单引号。否则 MATLAB 会将它们解释为字符串的结尾,然后分解后面的内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多