我目前正在使用D作为各种命令行脚本的脚本语言来自动执行枯燥的任务。我希望能够在D中编写带有管道输入的脚本,但是当前,我没有取得多大成功,因为我正在管道它似乎没有出现在参数列表中!
例如,假设我有一个脚本foo.exe,它意味着只需要一个输入。我的想法是,我可以写,例如:
echo bar | foo
并在条形图打印到屏幕后使用输入栏运行foo
。但是,每次我尝试这个时,我似乎都没有foo
的args数组中的任何参数(只是foo本身)。我在这里做的不是什么?
答案 0 :(得分:7)
传递给main
函数的参数对应于在命令行上程序名后指定的参数。例如。如果你运行foo arg1 arg2
,那么main
函数会将参数数组设置为["foo", "arg1", "arg2"]
。
管道输入是不同的。在这里,您告诉shell使用附加到另一个程序输出的标准输入流来启动程序,而不是像往常一样使用TTY(键盘输入)。要处理以这种方式传递的输入,只需使用readln
和co。好像你正在阅读键盘输入。您可以参考stdin
File
变量来访问byLine
等属性,这样可以轻松迭代输入流中的每一行。