C++ 自定义交互式shell

C++ 自定义交互式shell,c++,shell,C++,Shell,我遇到了以下问题:我的控制台实用程序应该作为一个进程运行(希望它是正确的术语),所以每个命令都直接指向它。像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:Obj

我遇到了以下问题:我的控制台实用程序应该作为一个进程运行(希望它是正确的术语),所以每个命令都直接指向它。像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$
第一个
命令
作为shell命令执行,但在我输入
irb
之后,它就不是了。你明白了

irb将控制台置于某种特殊模式,或者它只是在某个循环中解析给定的输入本身?
这里有什么合适的方法来创建C++中的这种行为吗?谢谢

您必须自己解析输入。根据输入的复杂性,这可以通过一些简单的字符串匹配来完成。一个非常简单的例子:

#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";
  }
}
#包括
#包括
int main()
{
std::字符串输入;
对于(;;)
{
std::cout>输入;
如果(输入=“退出”)
返回0;
else if(输入=“测试”)
std::cout
)并理解命令
退出
测试
,并将在所有其他命令上打印
未知命令。


对于其他方面,您可能想了解更多关于模式匹配或解析的知识;Google是您的朋友(请看一个示例和一个好例子)为了解析你的命令行,你可以使用.< /p>我不理解你的问题。你想在C++程序中捕获控制台输入吗?为什么你要谈论IRB?@ NoRIRBB只是我所说的行为的一个例子,与我的问题毫无关系。谢谢,这是一个明显的解决方案,但我确实想要拥有SOM。e更复杂的命令-具有动态参数数量等。无论如何,我想我必须自己编写它。