Shell 脚本检查 ubuntu 版本然后复制文件

问题描述 投票:0回答:4

我是 shell 脚本编程新手。我想写一个简单的shell脚本来检查系统中安装的ubuntu版本;如果版本大于或等于版本 12,则复制一些文件,如果版本小于或等于版本 12,则复制其他一些文件。

linux shell ubuntu
4个回答
21
投票

lsb_release -rs
命令让我们确定Ubuntu版本,我们可以这样使用它:

if [[ $(lsb_release -rs) == "18.04" ]]; then # replace 8.04 by the number of release you want

       echo "Compatible version"
       #Copy your files here
else
       echo "Non-compatible version"
fi

``(包含反引号)是非 POSIX 且已弃用。


2
投票
cat /etc/issue.net |  awk '{x=2 ; if (substr($x,0,3) == '12') {system("cp <src> <dest>") } else {system("cp <src> <dest>") }}'

cat /etc/issue.net
将显示 3 个字段,其中第 2 个字段是版本号。

通过

substr
我们检查前两位数字是否是版本12,然后通过内部的系统命令
awk
我们可以将某些文件从特定的src复制到dest。


0
投票

解决方案

cat /proc/version
,解析数字并执行条件/开关语句来执行操作。

来自 RadHat 文档

此文件指定正在使用的 Linux 内核和 gcc 的版本,以及系统上安装的 Red Hat Enterprise Linux 的版本:


0
投票

Ubuntu 版本可在文件

/etc/lsb-release
中作为变量
22.04
中的字符串(如
20.04
DISTRIB_RELEASE
)获得。您可以
source
此文件并访问
DISTRIB_RELEASE
。但是如果版本是
>=
12 或者其他的话,你需要做一些事情。为此,您需要将版本从字符串转换为整数。

在下面的脚本中,

  1. source
     上做 
    /etc/lsb-release
  2. 然后拆分
    $DISTRIB_RELEASE
    字符串值以仅提取主要版本。因为
    $DISTRIB_RELEASE
    值类似于
    22.04
    20.04
  3. 然后将主版本字符串(
    $major_ver
    )转换为整数并与所需版本(
    12
    )进行比较。
#!/usr/bin/env bash

source /etc/lsb-release

if [ -z $DISTRIB_RELEASE ] || [ -z $DISTRIB_ID ]; then
    echo "DISTRIB_RELEASE and DISTRIB_ID are not set"
else
    if [ $DISTRIB_ID == "Ubuntu" ]; then
        IFS='.' read -r -a distro_vers <<< $DISTRIB_RELEASE
        major_ver=${distro_vers[0]}
        echo "Distro major version $major_ver"
        if [ -z $major_ver ]; then
            echo "Major release version parsing failed"
        else
            if [ $(($major_ver)) -ge 12 ]; then
                echo "Ubuntu major version is greater than 12"
                # do your operation here
            else
                echo "Ubuntu major version is lesser than 12"
                # do your operation here
            fi
        fi
    else
        echo "It is not ubuntu linux"
    fi
fi
© www.soinside.com 2019 - 2024. All rights reserved.