【问题标题】:Using pipe symbol and "print" in Windows在 Windows 中使用管道符号和“打印”
【发布时间】:2013-04-02 14:56:16
【问题描述】:

我正在尝试使 shell 脚本在 Windows 中工作。抱歉,我在 Windows 方面不是很有经验(老实说,甚至在 shell 方面也没有那么多经验)。该脚本运行良好,除了这一行:

print "9\n0\n1\n5\n0\n0\n\n" | /usr/ts23/mm_util

mm_util 是一个将数字作为输入的交互式实用程序。它首先选择选择 9,然后是 0,然后是 1,等等。我已经更改了使用该实用程序的路径,它在 Windows 中具有相同的界面,但输出只是第一个屏幕。未输入“9”输入,因此输出(已解析)不正确。如何更改此设置以便在第一个屏幕上输入“9”?

【问题讨论】:

    标签: shell dos pipe


    【解决方案1】:

    这是一种不需要文件的方法。它适用于命令行:

    (for %N in (9 0 1 5 0 0 "") do @echo(%~N)|c:\Users\ts23\mm_util
    

    "" 是在输出中获得一个空行,就像您在原始问题中所做的那样。您的答案没有空行。

    %~N 表示法从值中去掉了引号。

    echo( 是非直观语法,可以可靠地打印空行,以防 %~N 扩展为空。

    如果您将代码放在批处理脚本中,请不要忘记将百分比加倍。

    【讨论】:

      【解决方案2】:

      尝试将那个九行换行零的东西放在一个文本文件中,然后执行print textfile.txt | /usr/ts23/mm_util

      请记住,Windows 使用的是 UNIX 之前的约定,即换行符是 CR LF,而不仅仅是 LF

      【讨论】:

      • 我尝试在 test.txt 文件中输入 9\r\n 9\n9 并尝试了您的命令,但不幸的是,它仍然无法正常工作,与以前的行为相同。只显示第一个屏幕。
      【解决方案3】:

      我得到我想要的输出的方法是使用这个:

      C:\Users\ts23\mm_util

      然后只需将以下内容放入 test.txt

      9
      0
      1
      5
      0
      0
      

      我得到的输出是我所需要的,希望这将有助于将来尝试做类似事情的人。

      【讨论】:

        猜你喜欢
        • 2017-07-12
        • 1970-01-01
        • 1970-01-01
        • 2021-08-15
        • 1970-01-01
        • 2015-05-28
        • 1970-01-01
        • 2014-04-14
        • 2018-04-23
        相关资源
        最近更新 更多