如何使用bash脚本匹配路径中的字符串/目录

时间:2010-03-10 07:01:10

标签: shell makefile rpm

我正在尝试创建一个Makefile,它使用路径中的信息来创建相关的rpm名称。假设我有两种不同的可能路径:

PATH1 = /usr/local/home/jsmith/code/main
PATH2 = /usr/local/home/jsmith/code/dev/ver2

如果在路径中检测到“main”,我想检测并将“main”附加到rpm名称。如果在路径中检测到“dev”,我想检测并将“ver2”附加到rpm名称。

我是shell脚本的新手,并且真的不知道从哪里开始。我可以很容易地在像python这样的东西中做这个,但是对于Makefile来说,所以我需要在shell中做到这一点。

路径中的“main”将是常量,但如果“main”不存在,则需要提取开发路径名称。这里有一些割草的例子:

的/ usr /本地的/ home / jsmith的/代码/主 在/ usr /本地的/ home / JSMITH /代码的/ dev / ver_usa 在/ usr /本地的/ home / JSMITH /代码的/ dev / ver_mexico 的/ usr /本地的/ home / jsmith的/代码的/ dev / VER3

如果存在“dev”,则需要提取“ver_usa”,“ver_mexico”,“ver3”等。需要提取的目录名称将完全遵循“dev”。

3 个答案:

答案 0 :(得分:2)

这样的事情,假设“main”和“ver2”不是常数

some_rpm_name="some rpm"
PATH=/usr/local/home/jsmith/code/main
#PATH2=/usr/local/home/jsmith/code/dev/ver2
s=${PATH##*/}
case "$s" in
  *main ) RPM_NAME="${some_rpm_name}_main";;
  *ver2) RPM_NAME="${some_rpm_name}_ver2";;
esac
echo $RPM_NAME

答案 1 :(得分:0)

使用grep并检查返回值?

另外,你可以在Makefile中运行python。

答案 2 :(得分:0)

看起来路径的最后一个元素总是你想要的那个。

rpmname=$rpmname+${pathname##*/}

rpmname=$rpmname+$(basename pathname)