2012-03-28 8 views
5

Mac OS X Lion 10.7のbashスクリプトを書いています。私はbashでOSのバージョンを確認する方法を知っています。 10.7.1とし、コマンドを実行してスクリプトを続行し、別のバージョンで同じことをして10.7.3とすると、10.7.1で使用したコマンドとは異なるコマンドを実行します。OSのバージョンを確認し、正しいバージョンがあればコマンドを発行してください

答えて

4

OS Xでsw_versコマンドを使用したい場合は、10.X.Xシステムのバージョン(sw_vers -productVersion)を含む人間が読める文字列を出力します。 unameを使ってカーネルのバージョンを確認することもできます。あなたのスクリプトが他のUnix変種に移植された場合はunameがそこで動作します。

+0

ありがとうございました。これを試してみてください –

5

OS_VERSION(フル...例10.7.3)

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

OR

sw_vers -productVersion 

OS(短い...例10.7)

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

OR

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

のbash:

#!/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'と' $ 6'を心配する必要がなくなり、スケーラビリティが向上します – tresf

1

あなたが唯一の主要なOSのバージョンを確認する必要がある場合は、心の中でダーウィンのバージョンを維持することは、それに対応しており、bashの内部に簡単であるシェル変数に設定されています数値的に匹敵する整数に強制する。

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 
関連する問題