好了,我创建了我自己的shell,并且我自己已经测试了很多,但是我需要shell脚本来运行和测试它。
我已经创建了一个脚本,它包含以下内容:
#!/bin/bash
echo "ls && echo dog" | ./a.out
但是,它所做的就是无限地打印命令提示符"$“,并且我必须强制退出程序。因此我很确定我的程序不喜欢我的脚本,哈哈。我的程序的工作方式是使用getline捕获用户输入,直到他们进行推送,然后使用boost库对字符串进行标记并查找连接器,例如"||“&&”;“等等,然后运行命令。所有这一切都是在一个while循环中完成的,该循环一直循环到用户键入exit并关闭我的程序。作为编写脚本的新手,我确信我可能没有以最好的方式编写脚本。我创建了一个简单的程序来询问您的年龄,然后输出它,这个脚本方法可以做到这一点,但是由于我的shell不是那么简单,所以我对这个脚本似乎不起作用并不感到惊讶。
string user_input;
bool good = true;
typedef boost::tokenizer<boost::char_separator<char> > tokenizer;
while(good){
//command prompt
cout << "$ ";
//read in user input
getline(cin, user_input);
//tokenize user input
tokenizer tok(user_input);
//parse and execute commands inputed by user in string
//only exit while loop if user command is <exit> good = false
}
如果我正常执行程序并将输入输入到程序中,我的shell就可以工作,我需要的是一个shell脚本,我可以用它来运行和测试程序。例如。如果我在标准的linux shell中输入./script.sh,它将运行我的脚本,然后执行我的a.out,然后使用各种命令测试我自己的shell,例如ls echo…
发布于 2016-02-03 12:05:16
当您到达EOF (文件结束)时,您应该退出shell。Getline,而在这种情况下返回-1。我想不出任何其他的建议,因为您没有提供任何代码,但这可能会解决无限循环问题。
https://stackoverflow.com/questions/35168181
复制相似问题