代码之家  ›  专栏  ›  技术社区  ›  Mikulas Dite

自定义交互式shell

  •  2
  • Mikulas Dite  · 技术社区  · 15 年前

    我遇到了以下问题:我的控制台实用程序应该作为一个进程运行(希望它是正确的术语),所以每个命令都直接指向它。像gnuplot、交互式shell(irb等)。

    这显示了我所说的:

    Mikulas-Dites-Mac-2:Web rullaf$ command
    Mikulas-Dites-Mac-2:Web rullaf$ irb
    >> command
    NameError: undefined local variable or method `command' for main:Object
        from (irb):1
    >> exit
    Mikulas-Dites-Mac-2:Web rullaf$
    

    第一 command irb

    irb将控制台置于某种特殊模式,或者它只是在某个循环中解析给定的输入本身?

    2 回复  |  直到 15 年前
        1
  •  2
  •   Greg S    15 年前

    #include <iostream>
    #include <string>
    
    int main()
    {
      std::string input;
      for(;;)
      {
        std::cout << ">>";
        std::cin >> input;
        if(input=="exit")
          return 0;
        else if(input=="test")
          std::cout << "Test!\n";
        else
          std::cout << "Unknown command.\n";
      }
    }
    

    显然,这个小程序会打印一个提示( >> exit test 并将打印 Unknown command. 在所有其他命令上。

    bison 例如,一个好的 tutorial

        2
  •  2
  •   neuro    15 年前

    要分析命令行,可以使用 Boost.Program_options