首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >编写一个使用输入运行程序的Shell脚本

编写一个使用输入运行程序的Shell脚本
EN

Stack Overflow用户
提问于 2016-02-03 11:51:56
回答 1查看 1.2K关注 0票数 0

好了,我创建了我自己的shell,并且我自己已经测试了很多,但是我需要shell脚本来运行和测试它。

我已经创建了一个脚本,它包含以下内容:

代码语言:javascript
运行
复制
#!/bin/bash
echo "ls && echo dog" | ./a.out

但是,它所做的就是无限地打印命令提示符"$“,并且我必须强制退出程序。因此我很确定我的程序不喜欢我的脚本,哈哈。我的程序的工作方式是使用getline捕获用户输入,直到他们进行推送,然后使用boost库对字符串进行标记并查找连接器,例如"||“&&”;“等等,然后运行命令。所有这一切都是在一个while循环中完成的,该循环一直循环到用户键入exit并关闭我的程序。作为编写脚本的新手,我确信我可能没有以最好的方式编写脚本。我创建了一个简单的程序来询问您的年龄,然后输出它,这个脚本方法可以做到这一点,但是由于我的shell不是那么简单,所以我对这个脚本似乎不起作用并不感到惊讶。

代码语言:javascript
运行
复制
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…

EN

回答 1

Stack Overflow用户

发布于 2016-02-03 12:05:16

当您到达EOF (文件结束)时,您应该退出shell。Getline,而在这种情况下返回-1。我想不出任何其他的建议,因为您没有提供任何代码,但这可能会解决无限循环问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35168181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档