如何拆分类似路径名的字符串以在Makefile中使用?

时间:2011-02-04 14:53:45

标签: perl shell makefile

我有这个Makefile代码:

%.spf:
    @echo $@;
    runMe.sh $1 $2 $3 $4 $5;

%.spf的示例值为:

ros_apple/bananas_go_while_197815:123.0/monkey_110_worst_forever/thestar.spf

我如何将文件名的参数提取到变量中?

$1 = ros_apple
$2 = bananas_go_while_197815:123.0
$3 = worst
$4 = 110
$5 = thestar

是否可以保留在Makefile中,或者我是否必须创建一个接收$@并调用shell的Perl脚本?

2 个答案:

答案 0 :(得分:1)

无论多么丑陋,您可以对组件1到4进行dir的嵌套调用,对基本名称进行notdir嵌套调用,并且可能使用模式匹配来去掉最后的斜杠。 / p>

答案 1 :(得分:1)

你真的需要变量中的路径组件,还是只需要将它们提供给runMe.sh拆分?如果是后者,那么您只需sedtr(或仅sed)即可完成。例如,用{:1}来说make all

X=ros_apple/bananas_go_while_197815:123.0/monkey_110_worst_forever/thestar.spf
all:
        @echo `echo $X | sed 's:\.spf$$::' | tr '/' ' '`

产生

ros_apple bananas_go_while_197815:123.0 monkey_110_worst_forever thestar

所以也许试试这个:

%.spf:
        @echo $@
        runMe.sh `echo $X | sed 's:\.spf$$::' | tr '/' ' '`

如果您已经无法在Perl中执行此操作,那么您可以轻松地将sedtr转换为Perl。