2014-05-01 12 views
8

Sono abbastanza nuovo per lo script di shell (si potrebbe dire che sto appena iniziando). Quello che mi serve è scrivere uno script di shell per aprire SOLO 1 "schermo" sessione. Quindi voglio aprire più finestre (ad esempio 10) nella stessa sessione e fare in modo che ogni sessione faccia qualcosa, ad esempio, stampa "ciao". Così qui è una parte del mio codice ma crea una sola finestra (0) e non stampa nulla su quella finestra:Lo script di shell avvia 1 sessione con più finestre

#!/bin/bash 
screen-d -m -S mysession 
for n in {1..10}; do 
    i=$(($n-1)) 
    screen -S mysession -p $i -X echo "hello" 
done 

Come ho detto, il mio codice di esempio non funziona! Apre una sessione con una sola finestra '0' e non viene stampato nulla sul terminale nella finestra '0'.

Potrebbe aiutarmi per favore? Il codice dovrebbe aprire una sessione di schermo e quindi nel ciclo per aprire 10 finestre e stampare "Ciao" in ogni finestra.

Grazie in anticipo!

Abedin

+0

Cosa intendi per "finestra"? È un termine specifico per 'screen'? Puoi taggare la tua domanda con 'screen' piuttosto che' shell'. – dg99

+0

Mi dispiace tanto per l'etichetta sbagliata ragazzi! Sono abbastanza nuovo anche per StackOverflow. Terrò il commento in mente per i post futuri! – user3578925

risposta

9

Il comando è possibile inviare con -X opzione non è shell di comando, ma il comando dello schermo.

Controllare la sezione CUSTOMIZATION in man screen per visualizzare l'elenco dei comandi sullo schermo. il seguente codice utilizza il comando screen per creare una nuova finestra e il comando stuff per visualizzare il testo sulla finestra.

#!/bin/bash 
screen -d -m -S mysession 
# window 0 is created by default, show hello0 on it 
screen -S mysession -p 0 -X stuff hello0 
for n in {1..9}; do 
    # create now window using `screen` command 
    screen -S mysession -X screen $n 
    screen -S mysession -p $n -X stuff hello$n 
done 

ora è possibile allegare al myscreen sessione e verificare che non vi sono 10 finestre e hello0 .. hello9 viene visualizzata in ogni finestra.

$ screen -r mysession 
[Press C-a "] 
+0

Grazie mille @ymonad! Ha funzionato! – user3578925

+1

Se vuoi eseguire un comando, un buon idioma (da devstack) è avere una variabile newline ('NL = \' echo -ne '\ 015' \ '') e aggiungerla al tuo comando, in questo modo: ' screen -S test -p 0 -X stuff "ping en.wikipedia.org $ NL" ' – MartyMacGyver

Problemi correlati