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

Koz*_*oss 3 windows shell scripting command-line d

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

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

echo bar | foo
Run Code Online (Sandbox Code Playgroud)

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

Vla*_*eev 7

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

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