2014-05-01 8 views
8

के साथ 1 सत्र शुरू करें मैं शैल स्क्रिप्टिंग के लिए बहुत नया हूं (आप कह सकते हैं कि मैं अभी शुरू कर रहा हूं)। मुझे केवल 1 "स्क्रीन" सत्र खोलने के लिए एक खोल स्क्रिप्ट लिखना है। फिर मैं एक ही सत्र में कई विंडोज़ (10 कहें) खोलना चाहता हूं और प्रत्येक सत्र को कुछ करने के लिए "हैलो" प्रिंट करना चाहता हूं। तो यहाँ मेरी कोड का एक हिस्सा है लेकिन यह केवल बनाता है एक खिड़की (0) और उस खिड़की पर कुछ भी प्रिंट नहीं करता है:शेल स्क्रिप्ट एकाधिक विंडोज़

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

जैसा कि मैंने कहा, मेरी नमूना कोड काम नहीं करता है! यह केवल एक विंडो '0' के साथ एक सत्र खोलता है, और विंडो '0' पर टर्मिनल पर कुछ भी मुद्रित नहीं होता है।

क्या आप कृपया मुझे कुछ मदद दे सकते हैं? कोड को एक स्क्रीन सत्र खोलना है और फिर लूप में 10 विंडो खोलने और प्रत्येक विंडो में "हैलो" प्रिंट करना है।

अग्रिम धन्यवाद!

आबदीन

+0

"खिड़की" से आपका क्या मतलब है? क्या यह एक 'स्क्रीन'-विशिष्ट शब्द है? आप 'शैल' के बजाय अपने प्रश्न को 'स्क्रीन' के साथ टैग करना चाह सकते हैं। – dg99

+0

मुझे गलत टैग लोगों के लिए बहुत खेद है! मैं स्टैक ओवरफ्लो के लिए भी काफी नया हूं। भविष्य में पोस्ट के लिए मैं टिप्पणी को ध्यान में रखूंगा! – user3578925

उत्तर

9

आदेश आप -X विकल्प के साथ भेजने के आदेश लेकिन स्क्रीन कमांड शेल नहीं है सकते हैं।

स्क्रीन कमांड की सूची देखने के लिए man screen में अनुकूलन अनुभाग देखें। निम्न कोड विंडो पर पाठ दिखाने के लिए नई विंडो और stuff कमांड बनाने के लिए screen कमांड का उपयोग करता है।

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

अब आप myscreen सत्र के लिए देते हैं और जाँच 10 खिड़कियों और hello0 .. hello9 प्रत्येक विंडो में प्रदर्शित होता देखते हैं कि कर सकते हैं।

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

बहुत बहुत धन्यवाद @ymonad! वह काम किया! – user3578925

+1

यदि आप कोई आदेश चलाने के लिए चाहते हैं, तो एक अच्छा मुहावरे (devstack से) एक न्यूलाइन वैरिएबल ('एनएल = \' echo -ne '\ 015' \ '') है और इसे अपने आदेश में संलग्न करें, जैसे: ' स्क्रीन-एस test -p 0 -X सामान "पिंग en.wikipedia.org $ एनएल" ' – MartyMacGyver

संबंधित मुद्दे