2014-05-01 6 views
8

Ich bin ziemlich neu zu Shell-Skripting (Sie können sagen, ich fange gerade erst an). Was ich brauche, ist ein Shell-Skript zu schreiben, um NUR 1 "Bildschirm" Sitzung zu öffnen. Dann möchte ich mehrere Fenster (sagen wir 10) in derselben Sitzung öffnen und jede Sitzung etwas tun, zum Beispiel "Hallo" drucken. Also hier ist ein Teil meines Code aber es schafft nur ein Fenster (0) und druckt nicht alles in diesem Fenster:Shell-Skript starten 1 Sitzung mit mehreren Fenstern

#!/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 

Wie ich schon sagte, mein Beispielcode funktioniert nicht! Es öffnet eine Sitzung mit nur einem Fenster '0', und auf dem Terminal auf Fenster '0' ist nichts aufgedruckt.

Könnten Sie mir bitte helfen? Der Code soll eine Bildschirmsitzung öffnen und dann in der Schleife 10 Fenster öffnen und "Hallo" in jedem Fenster ausgeben.

Vielen Dank im Voraus!

Abedin

+0

Was meinst du mit "Fenster"? Ist das ein "Bildschirm" -spezifischer Begriff? Vielleicht möchten Sie Ihre Frage mit 'screen' und nicht mit' shell' versehen. – dg99

+0

Es tut mir so leid für die falschen Leute! Ich bin auch ziemlich neu in StackOverflow. Ich werde den Kommentar für zukünftige Beiträge behalten! – user3578925

Antwort

9

Der Befehl können Sie mit -X Option senden Shell ist nicht Befehl, aber Bildschirmbefehl.

Überprüfen Sie den Abschnitt CUSTOMIZATION unter man screen, um die Liste der Bildschirmbefehle anzuzeigen. Der folgende Code verwendet screen Befehl zum Erstellen eines neuen Fensters und stuff Befehl zum Anzeigen von Text im Fenster.

#!/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 

Jetzt können Sie auf myscreen Sitzung anschließen und prüfen, ob es 10 Fenster und hello0 .. hello9 in jedem Fenster angezeigt wird.

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

Vielen Dank @Yymonad! Das hat funktioniert! – user3578925

+1

Wenn Sie einen Befehl ausführen wollen, muss ein gutes Idiom (von Devstack) eine neue Zeilenvariable haben ('NL = \ 'echo -ne' \ 015 '\' ') und diese an Ihren Befehl anhängen, so:' screen -S test -p 0 -X stuff "ping de.wikipedia.org $ NL" ' – MartyMacGyver