2009-08-31 12 views
5

Sto cercando un modo per scaricare l'input nel mio terminale da un file, ma quando viene raggiunto EOF desidero tornare alla mia tastiera. C'è un modo per farlo con Bash (o qualsiasi altra shell * nix comunemente disponibile)?Reindirizzamento temporaneo dell'ingresso in Bash

Dettagli: Sto eseguendo il debug di un programma server che esegue un fork per avviare un processo figlio. Ogni volta che avvio una sessione di debugging con gdb devo digitare il comando set-fork-mode child. Vorrei utilizzare una sorta di reindirizzamento dell'input per avere questo pre-compilato. Ci sono anche altri usi a cui posso pensare, quindi preferirei una soluzione generale - da qui la ragione per cui questa domanda è non su gdb.

Soluzione: start-server.sh

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

run-Server.txt

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

risposta

8

si può fare questo:

cat input_file - | program 

Che vi concatenare input_file seguito da stdin-program, che credo sia quello che vuoi.

+0

+1 Questo spiega quando uso "| vi -" penso. L'avevo trovato da qualche parte e non avevo mai visto cosa significasse *. Questo potrebbe essere il biglietto. –

+0

È confuso quando si usano parentesi angolari come se fossero virgolette, poiché vengono utilizzate per il reindirizzamento. –

+0

Dennis: Questo è un buon punto. Li cambierò. –

1

forse expect è quello che volete

+0

+1 Posso vedere come aiutarlo a generare una sceneggiatura - esaminerò quali tipi di cose si aspettano possano fare. Grazie per il link. Finora non penso che risponda alla mia domanda. –

+0

http://expect.nist.gov/example/dislocate.man.html sembra promettente –

+0

Nel complesso, penso che l'aspettativa sia uno strumento piacevole. Dovrò scavare in esso - la soluzione di jbourque era più in linea con quello che stavo chiedendo però. –

0

magari utilizzare un file intermedio ? Supponendo che si desidera eseguire lo script di myscript.sh:

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