2012-03-28 18 views
5

मैक ओएस एक्स शेर 10.7 के लिए एक बैश स्क्रिप्ट लिख रहा हूं और मैं जानना चाहता हूं कि मैं बैश में ओएस के संस्करण को कैसे देख सकता हूं और यदि संस्करण है 10.7.1 कहें तो यह एक कमांड करता है और स्क्रिप्ट के साथ जारी रहता है और एक अलग संस्करण के लिए एक ही चीज करता है 10.7.3 कहता है तो यह एक अलग कमांड करता है जो कमांड 10.7.1 के लिए उपयोग किया जाता है?ओएस का संस्करण देखें तो सही संस्करण

उत्तर

4

आप ओएस एक्स पर sw_vers कमांड चाहते हैं। यह कुछ मानव-पठनीय तारों को प्रिंट करता है, जिसमें 10.X.X सिस्टम संस्करण (sw_vers -productVersion) शामिल है। कर्नेल संस्करण की जांच के लिए आप uname का भी उपयोग कर सकते हैं; यदि आपकी स्क्रिप्ट को कभी भी यूनिक्स वेरिएंट uname पर पोर्ट किया गया है तो वहां काम करेगा।

+0

धन्यवाद। बीमार कोशिश करें –

5

OS_Version (पूर्ण ... उदाहरण 10.7.3)

system_profiler SPSoftwareDataType | grep "System Version" | awk '{print $6}' 

या

sw_vers -productVersion 

ओएस (कम ... उदाहरण के 10,7)

system_profiler SPSoftwareDataType | grep "System Version" | awk '{print $6}' | sed "s:.[[:digit:]]*.$::g" 

या

OS_Version=$(OS (short… example 10.7) | sed "s:.[[:digit:]]*) 

बैश:

#!/bin/bash 

# Use one of the examples given above to create the OS_Version variable 

if [[ ${OS_Version} == 10.7.3 ]]; then 
    echo "Operating System is a match... will continue on." 
else 
    echo "Operating System is NOT a match... will NOT continue." 
fi 
+0

फिक्स और टिप के लिए धन्यवाद। – E1Suave

+1

मुझे $ 6 के बजाय $ 5 का उपयोग करना पड़ा। – funroll

+0

'sw_vers -productVersion' तर्कसंगत रूप से पहला जवाब होना चाहिए। अनुभव से और टिप्पणियों को पढ़ने से, यह '$ 5' बनाम' $ 5' के बारे में चिंता करने से बचाता है और यह अधिक स्केलेबल है – tresf

1

आप केवल प्रमुख OS संस्करण की जाँच करने के, डार्विन संस्करण यह से मेल खाती है, और भीतर बैश शेल चर के लिए सेट है कि आसान है को ध्यान में रखना की जरूरत है एक संख्यात्मक तुलनीय पूर्णांक के लिए मजबूर करने के लिए।

if [[ ${OSTYPE:6} -ge 13 ]]; then 
    echo "At least 10.9, so feeling fine."; 
else 
    echo "Time to put the old cat to sleep."; 
fi 
संबंधित मुद्दे