【问题标题】:Writing a Shell Script that runs my program with inputs编写一个带输入运行我的程序的 Shell 脚本
【发布时间】:2023-04-11 08:42:01
【问题描述】:

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

我创建了一个包含以下内容的脚本:

#!/bin/bash
echo "ls && echo dog" | ./a.out

但是,它所做的只是无限打印命令提示符“$”,我必须强制退出程序。因此我很确定我的程序不喜欢我的脚本哈哈。我的程序通过使用 getline 来捕获用户输入,直到他们推送 和 boost 库来标记字符串并查找连接器,例如“||” "&&" ";"等等,然后运行命令。所有这些都是在一个循环中完成的,该循环一直循环到用户键入 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 ...

【问题讨论】:

标签: c++ linux bash shell


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-30
    • 1970-01-01
    • 2015-02-11
    • 1970-01-01
    • 1970-01-01
    • 2017-04-18
    • 1970-01-01
    相关资源
    最近更新 更多