【问题标题】:Shell script to check ubuntu version and then copy files用于检查 ubuntu 版本然后复制文件的 Shell 脚本
【发布时间】:2012-09-22 15:23:52
【问题描述】:

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

【问题讨论】:

  • 我尝试过一些基本的脚本,比如复制文件和执行一些命令,但我对 shell 脚本中的条件检查没有太多了解
  • 就像在其他所有编程语言上一样,使用 if 声明。我相信一些搜索可以帮助你。

标签: linux shell ubuntu


【解决方案1】:

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 且已弃用。

【讨论】:

  • 使用lsb_release -rs 甚至省略了Release: 部分。
  • 确实,这缩短了整个解决方案。我已经编辑了答案,因此省略了这个 sed-stuff。感谢您指出,@A.H. !
  • 这需要 bash,所以如果使用 /bin/sh 将不起作用
【解决方案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 个字段,其中第二个字段是版本号。

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

【讨论】:

    【解决方案3】:

    解决方案cat /proc/version,解析数字并执行条件/切换语句以执行操作。

    来自 RadHat documentation:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-22
      相关资源
      最近更新 更多