我正在实现一个模拟Linux的程序,我需要用多个管道实现表达式--但我不确定什么是合法的,或者如何处理一些事情,例如:
发布于 2015-12-26 17:10:13
没有一个Linux (但是有几个shell )。最常见的是GNU bash,但您可以使用其他一些工具,如zsh (我正在交互地使用)、鱼,甚至[医]坏蛋 -or es,后者的语法完全不同。而且它们都没有完全相同的语法,也没有报告相同的错误。
然而,有一个标准POSIX,它定义了POSIX外壳规范 (作为英语的技术文档):
管道的格式是: 好了!command1 x command2 . command1的标准输出应连接到command2的标准输入端。
如您所见,不能用|结束命令。
当输入了一个不完整的行时,您的交互式bash将提供一个不同的提示。它使用GNU读出线库进行交互式可编辑输入(和完成)。
我在Linux上知道的所有shell都是自由软件,所以您可以研究它们的源代码。sash是一个相当简单的shell,其代码非常可读的(但有点错误);它缺少大多数更复杂的shell的交互工具(尤其是自动完成)。
在编写自己的shell之前,您需要了解大部分高级Linux编程 .
对于家庭作业,您可能可以在第一次遇到错误时给出错误消息。
https://stackoverflow.com/questions/34473200
复制相似问题