Macos 检查操作系统的版本,如果版本正确,则发出命令

Macos 检查操作系统的版本,如果版本正确,则发出命令,macos,bash,operating-system,osx-lion,sh,Macos,Bash,Operating System,Osx Lion,Sh,我正在为Mac OS X Lion 10.7编写一个bash脚本,我想知道如何在bash中检查操作系统的版本,如果版本是10.7.1,那么它会执行一个命令并继续执行脚本,对不同的版本执行相同的操作,比如10.7.3,然后它会执行不同的命令,然后是用于10.7.1?您希望在OS X上使用sw\u vers命令。它打印一些人类可读的字符串,包括10.X.X系统版本(sw\u vers-productVersion)。您还可以使用uname检查内核版本;如果您的脚本曾经被移植到其他Unix变体,una

我正在为Mac OS X Lion 10.7编写一个bash脚本,我想知道如何在bash中检查操作系统的版本,如果版本是10.7.1,那么它会执行一个命令并继续执行脚本,对不同的版本执行相同的操作,比如10.7.3,然后它会执行不同的命令,然后是用于10.7.1?

您希望在OS X上使用
sw\u vers
命令。它打印一些人类可读的字符串,包括10.X.X系统版本(
sw\u vers-productVersion
)。您还可以使用
uname
检查内核版本;如果您的脚本曾经被移植到其他Unix变体,uname将在那里工作。

OS\U版本(完整…示例10.7.3)

OS(简称…示例10.7)

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

如果只需要检查主操作系统版本,请记住Darwin版本对应于它,并且在bash中设置为一个shell变量,该变量很容易强制为数值可比的整数

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

谢谢你的修复和提示。我不得不用5美元而不是6美元。
sw\u verse-productVersion
应该是第一个答案。从经验和阅读评论来看,它避免了担心
$5
$6
之间的差异,而且更具可扩展性
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
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