首页 > 解决方案 > 我的 bash 脚本有什么问题?它无法指定我的操作系统类型

问题描述

#!/bin/bash

if [ ["$OSTYPE" == "linux-gnu"*] ]; then
    SCRIPT_PATH=$(dirname $(realpath -s $0))
elif [ ["$OSTYPE" == "darwin"*] ]; then
    SCRIPT_PATH=$(dirname $(pwd))
    echo "mac!!"
else
     echo "Unknown OS!"
    exit
fi

我想编写一个 bash 脚本来指定操作系统类型。但在我的 MacOS 上,结果显示“未知操作系统!”,这是错误的。我echo $OSTYPE在终端尝试过,它显示darwin20.0。所以我想知道我的代码有什么问题?

标签: bashsyntax

解决方案


确保你的左括号和右括号之间没有空格,即[[]]vs[ [] ]你可以去掉你的模式中的引号:

#!/usr/bin/env bash

OSTYPE=linux-gnu-123

if [[ "$OSTYPE" == linux-gnu* ]]; then
  echo "linux"
elif [[ "$OSTYPE" == darwin* ]]; then
  echo "mac"
else
  echo "Unknown OS!"
fi

此外,使用https://www.shellcheck.net/来验证您的脚本。


推荐阅读