Linux Shell if 使用参考

news2024/12/23 7:25:59

 

if 参考

与许多其他语言一样,PowerShell 提供了用于在脚本中有条件地执行代码的语句。 其中一个语句是 If 语句。 今天,我们将深入探讨 PowerShell 中最基本的命令之一。

案例使用解释,以下是部署virtualbox使用if参考解释

  • if 判断检查系统中是否已经安装了 VirtualBox,如果没有则开始安装。
  • 安装 VirtualBox 的依赖环境,包括 gcc、make、glibc、kernel-headers、kernel-devel、dkms、wget、net-tools、kernel、elfutils-libelf-devel、mesa-libGL 和 mesa-libGL-devel。
  • 安装 Xfce 桌面环境和基础组件。
  • 配置 Xfce 桌面环境的启动方式。
  • 下载 VirtualBox 软件包和扩展包。
  •  安装 VirtualBox 软件包和扩展包。
  • 重启系统。
  • 输出安装结果。
#!/bin/bash
# -*- coding: utf-8 -*-
# Author: CIASM
# update 2023/05/19

# 定义一个函数,用于安装 VirtualBox
install_virtualbox (){

    # 如果系统中没有安装 VBoxManage 命令
    if ! command -v VBoxManage &> /dev/null
	#if command -v VBoxManage >/dev/null 2>&1; then
    then
        # 定义一些变量
        directory=/root
        virtualbox_directory_check=/usr/lib/virtualbox/
        virtualbox_pack_url=http://download.virtualbox.org/virtualbox/7.0.6/
        virtualbox_extpack=Oracle_VM_VirtualBox_Extension_Pack-7.0.6-155176.vbox-extpack

        virtualbox_url=https://download.virtualbox.org/virtualbox/7.0.6/VirtualBox-7.0-7.0.6_155176_el8-1.x86_64.rpm

        # 检查上一条命令的返回值,如果成功则执行下面的命令
        if [ $? -eq 0 ];then 
            echo "VirtualBox Dependent environment install"
            # 安装一些依赖包
            yum install -y http://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
            dnf --enablerepo=epel -y install gcc make glibc kernel-headers kernel-devel dkms
            yum install -y wget net-tools 
            yum install -y kernel
            yum install -y elfutils-libelf-devel
            yum install -y mesa-libGL mesa-libGL-devel
            dnf --enablerepo=epel group -y install "Xfce" "base-x"
            echo "exec /usr/bin/xfce4-session" >> ~/.xinitrc
            #startx8

            echo "install VirtualBox"
            # 安装 VirtualBox
            yum install -y $virtualbox_url

            echo "download VirtualBox extension"
            # 下载 VirtualBox 扩展包
            wget -N -P $directory  $virtualbox_pack_url/$virtualbox_extpack

            echo "reboot system"
            # 重启系统
            reboot

            echo -e "\033[32mThe virtualbox Install Success...\033[0m" 
        else
            echo -e "\033[33mThe virtualbox Install Failed...\033[0m" 
            exit 1
        fi
    else
        echo -e "\033[31mThe virtualbox Install already...\033[0m"
    fi
}
 
# 定义一个主函数,用于调用安装 VirtualBox 的函数
main (){
    install_virtualbox
}
 
# 调用主函数
main

if 段案例解释说明 

  • 第一行代码中的 `! command -v VBoxManage &> /dev/null` 表示检查是否已经安装了 VBoxManage 命令行工具。如果该命令不存在,则条件成立,执行后续操作。
  • 第二行代码中的 `command -v VBoxManage >/dev/null 2>&1` 与第一行代码的作用相同,但是使用了不同的语法。如果该命令存在,则条件成立,执行后续操作。
if ! command -v VBoxManage &> /dev/null
then

if command -v VBoxManage >/dev/null 2>&1; then
then

检查安装信息段解释说明 

  • - echo -e "\033[32mThe virtualbox Install Success...\033[0m":如果VirtualBox安装成功,输出绿色字体的“The virtualbox Install Success...”提示信息。
  • - else:如果VirtualBox安装失败,则执行下面的语句。
  • - echo -e "\033[33mThe virtualbox Install Failed...\033[0m":输出黄色字体的“The virtualbox Install Failed...”提示信息。
  • - exit 1:退出脚本并返回错误代码1。
  • - if [ -z "$(which virtualbox)" ]:检查系统中是否已经安装了VirtualBox,如果没有安装,则执行下面的语句。
  • - wget https://download.virtualbox.org/virtualbox/6.1.26/virtualbox-6.1_6.1.26-145957~Ubuntu~eoan_amd64.deb:从VirtualBox官网下载VirtualBox的deb安装包。
  • - sudo dpkg -i virtualbox-6.1_6.1.26-145957~Ubuntu~eoan_amd64.deb:使用dpkg命令安装VirtualBox。
  • - if [ $? -eq 0 ]:检查上一条命令的执行结果,如果返回值为0,则表示安装成功。
  • - else:如果安装失败,则执行下面的语句。
  • - echo -e "\033[33mThe virtualbox Install Failed...\033[0m":输出黄色字体的“The virtualbox Install Failed...”提示信息。
  • - exit 1:退出脚本并返回错误代码1。
  • - else:如果VirtualBox已经安装,则执行下面的语句。
  • - echo -e "\033[31mThe virtualbox Install already...\033[0m":输出红色字体的“The virtualbox Install already...”提示信息。
        echo -e "\033[32mThe virtualbox Install Success...\033[0m" 
        else
            echo -e "\033[33mThe virtualbox Install Failed...\033[0m" 
            exit 1
        fi
    else
        echo -e "\033[31mThe virtualbox Install already...\033[0m"
    fi

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/544419.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

创新灵感来源于用户实践,TDengine 首次公开四项专利申请

好消息!好消息! 美国专利局来电 TDengine又有一个新专利证书下来啦! 这一专利名为 “一种时序数据库表结构改变处理方法” 做技术创新我们真的是认真的~ 话不多说,给大家上图展示一下 我们都知道,在当下这样一个…

前端性能测试Lighthouse的使用

Lighthouse是一个开源项目,提高网页的质量,生成的测试报告会提供优化方案,以来提高网页的性能。重点就是关注优化建议 官方介绍Lighthouse的地址:https://developer.chrome.com/docs/lighthouse/ 一、使用方法 1、使用谷歌开发者…

Redis数据类型-Set

一. 概述 首先我们来看看Redis中的Set类型有什么特点。 与List相比,Set集合中的元素不允许重复,一个集合中最多可以对应2^32-1(4294967295)个元素。 Set除了可以执行增删改查的命令之外,还支持交集、并集、差集等的计算。 二. 基本命令 对我们…

当Python遇上异步编程:实现高效、快速的程序运行!

前言 同步/异步的概念: 同步是指完成事务的逻辑,先执行第一个事务,如果阻塞了,会一直等待,直到这个事务完成,再执行第二个事务,顺序执行 异步是和同步相对的,异步是指在处理调用这…

单片机的几种ota内存分区表介绍

前言 在做项目时,现在越来越多被要求单片机要支持升级功能。需求变化快,固件要不断支持新的功能,手动人工去烧固件越来越显得麻烦,已经操作成本高。 典型的方式是通过单片机外接的蓝牙、wifi等无线模块,或者通过单片…

如何创建UE5插件?

UE5 插件开发指南 前言1.0.打开插件窗口1.1.打开新建插件窗口1.2.填写新插件信息1.3.查看引擎自动生成的插件内容前言 首先,笔者默认读者已经知道如何安装UE5虚幻引擎了,并且也会编辑器的一些基本操作,那么这里省略了:如何注册Epic Games账号?如何安装UE5引擎?如何安装C++相…

基于SpringBoot的完成SSM整合项目开发

整合第三方技术 1. 整合JUnit问题导入1.1 Spring整合JUnit(复习)1.2 SpringBoot整合JUnit 2. 基于SpringBoot实现SSM整合问题导入2.1 Spring整合MyBatis(复习)2.2 SpringBoot整合MyBatis2.3 案例-SpringBoot实现ssm整合 1. 整合JU…

Maven多环境配置与使用、跳过测试的三种方法

文章目录 1 多环境开发步骤1:父工程配置多个环境,并指定默认激活环境步骤2:执行安装查看env_dep环境是否生效步骤3:切换默认环境为生产环境步骤4:执行安装并查看env_pro环境是否生效步骤5:命令行实现环境切换步骤6:执行安装并查看env_test环境是否生效 2 跳过测试方式1:IDEA工具…

机器学习之滤波入门

滤波的基本概念: 滤波是一种信号处理技术。在机器学习中,滤波通常指的是对输入信号进行加工,以消除噪声、平滑信号或突出特定频率范围的信号 简言之:加工输入,达到理想信号。 用生活的例子来解释: 假设你正在听一首音乐,但是在你的…

UML中的assembly关系

UML中的assembly关系 1.什么是Assembly关系 在UML(统一建模语言)中,"assembly"(组装)是一种表示组件之间关系的关联关系。组件是系统中可替换和独立的模块,可以通过组装来构建更大的系统。 当一…

零基础入门网络安全必看书单(附电子书籍+配套资料)

学习的方法有很多种,看书就是一种不错的方法,但为什么总有人说:“看书是学不会技术的”。 其实就是书籍没选对,看的书不好,你学不下去是很正常的。 一本好书其实不亚于一套好的视频教程,尤其是经典的好书…

中间件(一)

中间件 1. 概念1.1 为什么要使用中间件?1.2 中间件定义及分类 2. 主要分类2.1 事务式中间件2.2 过程式中间件2.3 面向消息的中间件2.4 面向对象中间件2.5 Web应用服务器2.6 数据库中间件2.7 其他 3. 常用的中间件 1. 概念 中间件(Middleware&#xff09…

BigDecimal 类型的使用

目录 一、前言 二、BigDecimal构造方法 二、BigDecimal参与运算 2.1定义初始值 2.2计算 2.3比较大小 2.4BigDecimal取其中最大、最小值、绝对值、相反数: 2.5补充 2.6、java中 BigDecimal类型的可以转换到double类型: 三、BigDecimal格式化、小…

小白白也能学会的 PyQt 教程 —— 图像类及图像相关基础类介绍

文章目录 〇、前言一、PyQt 中的图像类1、图像类简介2、图像类转换① 常用类转换(QPixmap、QImage、QIcon)② QBitmap、QBrush、QPen 转换为 QPixmap 或 QImage③ QByteArray 与 QPixmap、QImage 的互转④ numpy 与 QImage 互转 二、图像显示组件1、使用…

DNDC模型在土地利用变化、未来气候变化下的建模方法及温室气体时空动态模拟实践技术

DNDC模型讲解 1.1 碳循环模型简介 1.2 DNDC模型原理 1.3 DNDC下载与安装 1.4 DNDC注意事项 ​ DNDC初步操作 2.1 DNDC界面介绍 2.2 DNDC数据及格式 2.3 DNDC点尺度模拟 2.4 DNDC区域尺度模拟 2.5 DNDC结果分析 ​ DNDC气象数据制备 3.1 数据制备中的遥感和GIS技术 3…

微博官方API使用方法【从注册到实战】

第一步:微博开发者身份认证 访问微博开放平台,登录自己微博账号,登录之后首先需要完善开发者的基本信息。【使用个人】 填写完成之后【审核通过】如下: 第二步:创建自己的应用 【备注:如果只是为了测试…

Linux安装Redis6.0版本教程

前言:采用Redis源码压缩包解压编译的安装方式。因为centos7.x的gcc版本还是4.8.5,而GCC编译指定的版本是需要5.3以上。 1、下载Redis的tar.gz的安装包 百度云下载:Linux下载Redis6.0.8 提取码:dbbv 2、安装gcc新版本 #环境部署…

【IEEE CIM 2023】基于多目标进化算法的抗菌肽设计方法

Evolutionary Multi Objective Optimization in Searching for Various Antimicrobial Peptides 小生境共享(Niche Sharing)是生物进化算法中的一个重要概念。在传统的进化算法中,通常会假设每个个体都是独立且不同的,因此可能会导…

机器学习基础之单层感知机及线性可分

文章目录 线性可分和权重向量公式线性不可分 线性可分和权重向量 单层感知机是后续深度学习的基础模型,本身没什么用,因为只能解决线性可分问题。 如这张图,想识别照片是横向的还是竖向的,只需要在中间画一条线,白点…

【大数据学习篇9】各区域热门商品Top3分析

学习目标/Target 掌握各区域热门商品Top3分析实现思路 掌握如何创建Spark连接并读取数据集 掌握利用Spark获取业务数据 掌握利用Spark过滤商品的行为类型 掌握利用Spark转换数据格式 掌握利用Spark统计每个区域中的不同商品 掌握利用Spark根据区域进行分组 掌握利用Spark根据区…