需要帮助实现命令行“;”选项进入C-Shell脚本

时间:2014-10-26 04:57:50

标签: c shell

我目前正在用C编写一个shell程序。我已经掌握了大部分基础知识,但我似乎无法弄清楚如何获得&#34 ;;"正确地工作,也就是说当我键入类似" command1;命令2"当shell运行时,它执行第一个命令,然后执行第二个命令。现在,它基本上具有与" |"相同的功能。命令。这是我&#34 ;;"的代码。命令部分:

char* cmd = line;
            char* also = strchr(cmd, ';'); /* Finds first ';'*/
            char* next = strchr(cmd, '|'); /* Find first '|' */

            while (also != NULL){
                    /* 'also' points to ';' */
                    *also = '\0';
                    input = go(cmd, input, first, 0);

                    cmd = also + 1;
                    also = strchr(cmd, ';'); /* Find next ';' */
                    first = 0;
            }

`

任何人都有关于我如何正常工作的提示?提前谢谢!

1 个答案:

答案 0 :(得分:0)

您的代码存在的问题是,当您输入command1 ; command2时,您将执行command1,但由于您正在寻找另一个; command2,因此永远不会已执行,因为也将设置为null。将执行command1 ; command2 ;的输入。

如果您正在阅读标准输入中的;'\n',或者如果您正在阅读\n#EOF,那么您想要做的就是从文件。所以你需要在这一行做出改变:

also = strchr(cmd, ';');
祝你好运。