我正在尝试创建一个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”。
答案 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)