0

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

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/local/home/jsmith/code/main /usr/local/home/jsmith/code/dev/ver_usa /usr/local/home/jsmith/code/dev/ver_mexico /usr/local/home/jsmith/code /dev/ver3

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

4

3 回答 3

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
于 2010-03-10T07:07:20.747 回答
0

使用grep并检查返回值?

此外,您可以在 Makefile 中运行 python。

于 2010-03-10T07:03:47.637 回答
0

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

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

或者

rpmname=$rpmname+$(basename pathname)
于 2010-03-10T14:05:21.970 回答