7

使用 bash,我想找到操作系统并通知用户。我试过:

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

我只是得到

uname -s 
Not Linux

在终端上,这是错误的。如何正确地将字符串设置为 uname 返回的内容?

谢谢

4

2 回答 2

13

而不是单引号,您可能打算使用反引号:

OS=`uname -s`

但你真的想要

OS=$(uname -s)

此外,您可以考虑使用 case,而不是最终将成为 if/else 系列的 if 语句:

case $( uname -s ) in
Linux) echo Linux;;
*)     echo other;;
esac
于 2012-05-24T11:52:01.120 回答
1

这将按要求返回操作系统 - 请注意,uname不一定在所有操作系统上都可用,因此它不是此答案的一部分。

case "$OSTYPE" in
  linux*)   echo "linux" ;;
  darwin*)  echo "mac" ;; 
  msys*)    echo "windows" ;;
  solaris*) echo "solaris" ;;
  bsd*)     echo "bsd" ;;
  *)        echo "unknown" ;;
esac
于 2014-10-15T02:09:41.180 回答