使用bash,我想查找操作系統並通知用戶。我想:從Bash腳本中檢測OS並通知用戶
OS='uname -s'
echo "$OS"
if [ "$OS" == 'Linux' ]; then
echo "Linux"
else
echo "Not Linux"
fi
我只是得到
uname -s
Not Linux
終端,這是錯誤的。我如何正確設置字符串到什麼uname返回?
感謝
使用bash,我想查找操作系統並通知用戶。我想:從Bash腳本中檢測OS並通知用戶
OS='uname -s'
echo "$OS"
if [ "$OS" == 'Linux' ]; then
echo "Linux"
else
echo "Not Linux"
fi
我只是得到
uname -s
Not Linux
終端,這是錯誤的。我如何正確設置字符串到什麼uname返回?
感謝
而不是單引號,你可能是指使用反引號:
OS=`uname -s`
但真要
OS=$(uname -s)
而且,而非如果statment,最終成爲一個if/else系列,您可以考慮使用案例:
case $(uname -s) in
Linux) echo Linux;;
*) echo other;;
esac
這將按要求返回操作系統 - 請注意,uname
不一定適用於所有操作系統,因此它不屬於此答案的一部分。
case "$OSTYPE" in
linux*) echo "linux" ;;
darwin*) echo "mac" ;;
msys*) echo "windows" ;;
solaris*) echo "solaris" ;;
bsd*) echo "bsd" ;;
*) echo "unknown" ;;
esac
+1指出'$()'... – 0xC0000022L
感謝您的答案!這是我第一次注意到'和a'之間的區別:D – Graham
這只是'$()'優越的原因之一:) – chepner