2012-05-24 27 views
6

बैश का उपयोग करके, मैं ऑपरेटिंग सिस्टम ढूंढना चाहता हूं और उपयोगकर्ता को सूचित करना चाहता हूं। मैंने कोशिश की:बैश स्क्रिप्ट से ओएस का पता लगाएं और उपयोगकर्ता को सूचित करें

OS='uname -s' 
echo "$OS" 
if [ "$OS" == 'Linux' ]; then 
    echo "Linux" 
else 
    echo "Not Linux" 
fi 

मैं बस टर्मिनल है, जो गलत है पर

uname -s 
Not Linux 

मिलता है। मैं स्ट्रिंग को सही ढंग से सेट करने के लिए स्ट्रिंग कैसे सेट करूं?

धन्यवाद

उत्तर

12

के बजाय सिंगल कोट्स, तो आप शायद बैकटिक का उपयोग करने के लिए होती:

OS=`uname -s` 

लेकिन तुम सच में

OS=$(uname -s) 

इसके अलावा, बल्कि एक अगर बयान से, चाहते हैं जो अंततः होगा एक if/else श्रृंखला बनें, आप मामले का उपयोग करने पर विचार कर सकते हैं:

case $(uname -s) in 
Linux) echo Linux;; 
*)  echo other;; 
esac 
+1

+1 '($ ') को इंगित करने के लिए +1 ... – 0xC0000022L

+0

उत्तर के लिए धन्यवाद! यह पहली बार है जब मैंने कभी भी 'और' के बीच का अंतर देखा है: डी – Graham

+1

यह केवल एक कारण है '$() 'बेहतर है :) – chepner

1

यह ओएस को अनुरोध के रूप में वापस कर देगा - ध्यान दें कि uname सभी ओएस पर आवश्यक नहीं है, इसलिए यह इस उत्तर का हिस्सा नहीं है।

case "$OSTYPE" in 
    linux*) echo "linux" ;; 
    darwin*) echo "mac" ;; 
    msys*) echo "windows" ;; 
    solaris*) echo "solaris" ;; 
    bsd*)  echo "bsd" ;; 
    *)  echo "unknown" ;; 
esac 
+0

-1 यहां बैश-विशिष्ट कुछ भी नहीं है लेकिन यह ओपी की समस्या को भी हल नहीं करता है। – tripleee

+0

उसका सवाल कहता है "बैश का उपयोग करके, मैं ऑपरेटिंग सिस्टम ढूंढना चाहता हूं और उपयोगकर्ता को सूचित करना चाहता हूं" 'uname' ओएस अज्ञेयवादी नहीं है - यह कुछ ओएस पर काम नहीं करेगा। इस समाधान को सबसे ज्यादा बाश पर काम करना चाहिए। आप सही हैं कि यह विशिष्ट नहीं है इसलिए मैंने जवाब समायोजित कर दिया है। – mogga

+0

"$ OSTYPE", एंड्रॉइड फोन और पूर्ण लिनक्स इंस्टॉलेशन के बीच अंतर करता है। – Alejandro