【问题标题】:Writing a D script that can be piped input from command line编写可以从命令行通过管道输入的 D 脚本
【发布时间】:2014-02-26 15:27:29
【问题描述】:

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

例如,假设我有一个脚本 foo.exe,它旨在接受单个输入。这个想法是我可以写,例如:

echo bar | foo

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

【问题讨论】:

  • 你“输入”的内容出现在标准输入上,而不是作为参数。

标签: windows shell command-line scripting d


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2014-02-25
    • 2013-01-22
    • 2012-12-30
    • 2016-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多