bash - 我的 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。所以我想知道我的代码有什么问题?
解决方案
确保你的左括号和右括号之间没有空格,即[[
和]]
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/来验证您的脚本。
推荐阅读
- ruby-on-rails - 是否可以使用 URL 在另一个应用程序中显示来自 rails 活动存储的图像?
- c++ - 如何可靠地让析构函数覆盖缓冲区而不在 C++ 中对其进行优化
- python - 列出加载的 IPython 扩展
- facebook - Facebook API - 获取每个广告系列随时间推移的效果数据
- mysql - MySQL - SQLite - 转换吐出 SET 错误
- r - 在R中同时使用“dgCMatrix”类数据的稀疏矩阵执行多个回归模型
- ruby-on-rails - 为什么我的表单不生成选择选项?
- r - 如何在 R ggplot 中创建具有标准偏差和具有不同 X 轴的构面的条形图?
- rust - Rust 错误:`std::vec::Vec 类型的值
` 不能从 `std::iter::Iterator 构建 - `
- node.js - 部署:/personal-site/ 处的页面错误:SyntaxError: Unexpected token '<'