编写可以从命令行输入管道的D脚本

时间:2014-02-03 08:06:53

标签: windows shell command-line scripting d

我目前正在使用D作为各种命令行脚本的脚本语言来自动执行枯燥的任务。我希望能够在D中编写带有管道输入的脚本,但是当前,我没有取得多大成功,因为我正在管道它似乎没有出现在参数列表中!

例如,假设我有一个脚本foo.exe,它意味着只需要一个输入。我的想法是,我可以写,例如:

echo bar | foo

并在条形图打印到屏幕后使用输入栏运行foo。但是,每次我尝试这个时,我似乎都没有foo的args数组中的任何参数(只是foo本身)。我在这里做的不是什么?

1 个答案:

答案 0 :(得分:7)

传递给main函数的参数对应于在命令行上程序名后指定的参数。例如。如果你运行foo arg1 arg2,那么main函数会将参数数组设置为["foo", "arg1", "arg2"]

管道输入是不同的。在这里,您告诉shell使用附加到另一个程序输出的标准输入流来启动程序,而不是像往常一样使用TTY(键盘输入)。要处理以这种方式传递的输入,只需使用readln和co。好像你正在阅读键盘输入。您可以参考stdin File变量来访问byLine等属性,这样可以轻松迭代输入流中的每一行。