2016-03-07 9 views
5

निम्नलिखित आरएचईएल पर /etc/init.d/functions से है। मैं यह पता लगाने की कोशिश कर रहा हूं कि __pids_var_run() फ़ंक्शन तब करता है जब मैं लूप के दौरान इस पर आया था।बैश कोण के बाद बाएं कोण ब्रैकेट बाश में क्या मतलब है?

  while : ; do 
        read line 
        [ -z "$line" ] && break 
        for p in $line ; do 
          if [ -z "${p//[0-9]/}" -a -d "/proc/$p" ] ; then 
            if [ -n "$binary" ] ; then 
              local b=$(readlink /proc/$p/exe | sed -e 's/\s*(deleted)$//') 
              [ "$b" != "$binary" ] && continue 
            fi 
            pid="$pid $p" 
          fi 
        done 
      done < "$pid_file" 

कोई समझा सकते हैं क्या while : ; do ; ... done < "$pid_file" करता है? अधिक विशेष रूप से, done के बाद अंतिम भाग, क्योंकि बाकी के बारे में अधिक या कम समझ में आता है।

+0

इसका मतलब यह है कि यह किसी भी आदेश के बाद करता है। –

उत्तर

4

इसका मतलब है कि लूप में कोई भी आदेश जो stdin से कुछ पढ़ता है, दी गई फ़ाइल (उदाहरण के लिए कीबोर्ड के बजाए) से पढ़ेगा।

विशेष रूप से इस मामले में, पाश read line का उपयोग करता stdin से एक पंक्ति को पढ़ने के लिए, इसलिए जब आप $pidfile से अनुप्रेषित यह प्रभावी रूप से लाइन द्वारा फ़ाइल लाइन पढ़ता है।

आगे पुनर्निर्देशन के बारे में पढ़ने के लिए, यहाँ एक Illustrated redirection tutorial जो Lhunath और GreyCat द्वारा this Bash Guide द्वारा सिफारिश की है।

+3

फ़ाइल से stdin लेने के लिए। कीबोर्ड के साथ ऐसा कुछ भी नहीं है। अक्सर, stdin एक कीबोर्ड से जुड़ा हुआ है, लेकिन दोनों को भंग करने की गलती है। –

+0

निश्चित रूप से, मुझे नहीं पता था कि इसे किस स्तर पर समझाया जाए। – alfC

+0

तकनीकी रूप से, यह 'while' यौगिक कमांड के लिए मानक इनपुट निर्दिष्ट करता है, जिससे शरीर में किसी भी कमांड को अपना मानक इनपुट प्राप्त होता है। – chepner

3

मुझे लगता है कि इस quesiton पहले से ही उत्तर है (क्योंकि मैं एक इनाम किया मैं टिप्पणी नहीं कर सकता है), लेकिन मुझे लगता है कि जब आप एक मौका मिलता है यदि आप इस साइट की जांच करनी चाहिए:

http://mywiki.wooledge.org/BashFAQ/001

यह आदमी (या लड़की) वास्तव में उदाहरण के साथ उचित और अनुचित वाक्यविन्यास में डाइव।

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