【问题标题】:Temporary Input Redirection in BashBash 中的临时输入重定向
【发布时间】:2009-08-31 17:25:41
【问题描述】:

我正在寻找一种将输入从文件转储到终端的方法,但是当达到 EOF 时,我希望输入返回到我的键盘。有没有办法使用 Bash(或任何其他常用的 *nix shell)来做到这一点?

详情: 我正在调试一个执行分叉以启动子进程的服务器程序。每次我使用 gdb 启动调试会话时,我都必须输入 set follow-fork-mode child。我想使用某种输入重定向来预先填充它。我还可以想到其他用途,所以我更喜欢通用解决方案 - 因此这个问题不是关于 gdb。

解决方案: start-server.sh

#!/bin/bash
cat run-server.txt - |/bin/bash

run-server.txt

gdb ./Server
set follow-fork-mode child
run

【问题讨论】:

    标签: bash shell input redirect stdin


    【解决方案1】:

    你可以这样做:

    cat input_file - | program
    

    这将连接input_file,后跟stdinprogram,我认为这就是你想要的。

    【讨论】:

    • +1 我想这解释了当我使用“|vi -”时。我在某处发现了它,但从未研究过它的含义。这可能是票。
    • 当你把尖括号当作引号来使用时会让人感到困惑,因为它们是用来重定向的。
    【解决方案2】:

    也许expect是你想要的

    【讨论】:

    • +1 我可以看到如何让它帮助我生成一个脚本——我会研究期望可以做什么。感谢您的链接。到目前为止,我认为它没有回答我的问题。
    • 总的来说,我认为 expect 是一个不错的工具。我必须深入研究它 - jbourque 的解决方案更符合我的要求。
    【解决方案3】:

    也许使用中间文件?假设您要运行脚本 myscript.sh:

    INPUT_FILE=input.txt
    TEMP_FILE=`mktemp -t input`
    myscript.sh < $TEMP_FILE &
    cat $INPUT_FILE >> $TEMP_FILE
    cat >> $TEMP_FILE
    

    【讨论】:

      猜你喜欢
      • 2010-10-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-14
      • 1970-01-01
      • 1970-01-01
      • 2012-08-08
      • 2012-04-04
      • 1970-01-01
      相关资源
      最近更新 更多