【问题标题】:Using Bash Script to feed input to command line使用 Bash 脚本将输入提供给命令行
【发布时间】:2014-04-19 20:03:23
【问题描述】:

所以我正在尝试制作一个 bash 脚本来调用这个命令,然后将其输入。它调用这个命令,该命令之后需要 3-4 个输入。我输入命令,它等待我输入名字,一个我输入名字它等待我输入姓氏,依此类推。如何使用 bash 脚本一次将这些参数传递给命令?

【问题讨论】:

    标签: linux bash


    【解决方案1】:

    有几种方法。

    将所有回显命令分组并将它们传递给命令:

    { echo $firstname; echo $lastname ; } | somecommand
    

    或使用heredoc:

    somecommand <<EOF
    $firstname
    $lastname
    EOF
    

    【讨论】:

    • 如果我使用管道方法。它会一次给它们一个管道吗?因为我需要它给它一个输入,然后它要求我再输入一个。如果有意义的话,我不能只在一个输入中给他们所有输入
    • 它们都将每个输入作为单独的行发送。 echo 默认添加换行符。
    • @Barmar 为什么是() 子shell?我认为 {} 命令分组在这里就足够了,不需要额外的 fork()?
    • 我不确定有多大区别,因为它必须为管道分叉。
    • 刚试了一下,好像不行。所以我有两个变量 firstname="John" lastname="Smith" 和一个变量命令。当我这样做时 (echo $firstname echo $lastname) | $command 它执行命令,然后等待我输入名字