Временное перенаправление ввода в Bash - PullRequest
5 голосов
/ 31 августа 2009

Я ищу способ выгрузить ввод в мой терминал из файла, но когда достигается EOF, я бы хотел, чтобы ввод вернулся на мою клавиатуру. Есть ли способ сделать это с помощью Bash (или любой другой общедоступной оболочки * nix)?

Подробнее: Я отлаживаю серверную программу, которая выполняет форк для запуска дочернего процесса. Каждый раз, когда я запускаю сеанс отладки с помощью gdb, мне нужно набирать set follow-fork-mode child. Я хотел бы использовать какое-то перенаправление ввода, чтобы предварительно заполнить это. Есть и другие варианты использования, которые я могу придумать, поэтому я бы предпочел общее решение - поэтому причина в том, что , а не о GDB.

Решение: start-server.sh

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

вводного server.txt

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

Ответы [ 3 ]

8 голосов
/ 31 августа 2009

Вы можете сделать это:

cat input_file - | program

Это объединит input_file с последующими stdin до program, что, я думаю, то, что вы хотите.

1 голос
/ 31 августа 2009

возможно ожидайте - это то, что вы хотите

0 голосов
/ 31 августа 2009

Может использовать промежуточный файл? Предполагая, что вы хотите запустить скрипт myscript.sh:

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