【问题标题】:Shell script to test command line program用于测试命令行程序的 Shell 脚本
【发布时间】:2012-02-11 19:09:48
【问题描述】:

我有一个用 C 编写的程序,其操作类似于以下输出。

WELCOME TO PROGRAM.

Hit 1 to do task 1.

Hit 2 to do task 2.

Hit q to quit.

我需要的是一个启动程序的 bash shell 脚本,然后在程序中输入 1、2 和 q,这样我就可以在一个命令中测试所有功能。

我认为它看起来类似于以下内容

#!/bin/bash

./start kernel 
1
2
q

【问题讨论】:

    标签: c bash scripting


    【解决方案1】:

    您可以使用“此处文档”。语法如下:

    ./start kernel <<EOF
    1
    2
    q
    EOF
    

    “EOF”可以是您想要的任何唯一词,只要它不是您在输入中实际需要的。

    【讨论】:

      【解决方案2】:

      通常您使用expect 来测试这些类型的应用程序。

      【讨论】:

      • 前面提到的解决方案在某些情况下似乎有效,但您的似乎是最好的解决方案。感谢拜伦的帮助:)
      【解决方案3】:

      您可以将输入保存在文本文件 - input.txt 中并以这种方式执行您的程序:./program &lt; input.txt

      【讨论】:

      • 我将这种方法称为“穷人的自动化”,而且我使用它的次数比我愿意承认的要多。零错误处理,但通常可以完成工作。
      【解决方案4】:

      我这样做:

      #! /bin/bash printf "1\n2\nq\n" | ./启动内核

      【讨论】:

        【解决方案5】:

        您可以将 shell 脚本视为它们的本质...只是在(尽管是新的)shell 中执行的每一行。

        进行这种输入的一种简单方法是,假设[your program] 接受标准输入,是:

        #!/bin/bash
        echo "1" | [your program] > [logfile1]
        echo "2" | [your program] > [logfile2]
        echo "q" | [your program] > [logfileq]
        

        【讨论】:

        • 如果我有误解请见谅;在我最初的阅读中,我认为您想一次测试这些功能(这段代码的作用),但现在我已经阅读了提供的其他答案似乎还不清楚。
        • @whoever_voted_down... 既然我是新来的,你能告诉我一些关于你为什么这样做的提示吗?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-26
        • 2020-01-08
        • 1970-01-01
        • 2017-09-14
        • 2013-08-21
        • 1970-01-01
        相关资源
        最近更新 更多