LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
123
返回列表 发新帖
楼主: swordhui

Help: 分解文件名的Bash函数

[复制链接]
发表于 2009-9-25 00:03:58 | 显示全部楼层
实在不知道你要做什么。
比较类似这样的东西:
./atom_is1gt2 ./app-sys/bash-test-4.3.3-r1.umk ./app-sys/bash-test1-4.3.4.umk
bash版本:
  1. bash --version
  2. GNU bash, version 3.2.48(1)-release (i486-pc-linux-gnu)
  3. Copyright (C) 2007 Free Software Foundation, Inc.
复制代码
  1. #!/bin/bash
  2. get_name_version_revision()
  3. {
  4.         fname=${1##*/}
  5.         fname=${fname%.umk}
  6.         nandv=${fname%-*}
  7.         vorre=${fname#$nandv}
  8.         if [ "$vorre" == "${vorre#-r}" ]
  9.         then
  10.                 version=${vorre#-}
  11.                 revision=0
  12.                 name=$nandv
  13.         else
  14.                 revision=${vorre#-r}
  15.                 version=${nandv##*-}
  16.                 name=${nandv%-*}
  17.         fi
  18.         echo $name $version $revision
  19. }
  20. compare_version()
  21. {
  22.         v1=$1.
  23.         v2=$2.
  24.         while true
  25.         do
  26.                 a=${v1%%.*}
  27.                 b=${v2%%.*}
  28.                 [ -z "$a" ] && [ -z "$b" ] &&  return 0
  29.                 [ "$a"0 -gt "$b"0 ] && return 1
  30.                 [ "$a"0 -lt "$b"0 ] && return 2
  31.                 v1="${v1#*.}"
  32.                 v2="${v2#*.}"
  33.         done
  34. }
  35. compare_atom()
  36. {
  37.         read n1 v1 r1 < <(get_name_version_revision $1)
  38.         read n2 v2 r2 < <(get_name_version_revision $2)
  39.         [ $n1 != $n2 ] && { echo atom different! >&2; return 101; }
  40.         compare_version $v1 $v2 && compare_version $r1 $r2
  41. #        return $?
  42. }
  43. compare_atom $1 $2
复制代码
回复 支持 反对

使用道具 举报

发表于 2010-3-13 23:27:46 | 显示全部楼层
MS是在做包管理 呵呵~我看着
回复 支持 反对

使用道具 举报

发表于 2010-3-17 03:43:41 | 显示全部楼层
受教了.原来在shell方面自己还有好多不明白的地方..
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-5-18 09:16:38 | 显示全部楼层
此帖导致了弦歌Linux的诞生,源码里采用的脚本都有署名,谢谢各位
期待各位有时间加入弦歌Linux的脚本开发。
下一个目标是实现包依赖关系的处理。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表