2011-02-04 43 views
0

我有這個Makefile代碼:如何拆分Makefile中使用的類似於路徑名的字符串?

%.spf: 
    @echo [email protected]; 
    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文件中或者說我要創造一些Perl腳本,需要在[email protected]並做內殼通話?

回答

1

您真的需要變量中的路徑組件嗎?或者您只需要將它們提供給runMe.sh split?如果是後者,那麼只需要sedtr(或只是sed)即可完成。例如,說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 [email protected] 
     runMe.sh `echo $X | sed 's:\.spf$$::' | tr '/' ' '` 

如果你死心塌地在Perl那麼你可以這樣做很容易將sedtr轉換成Perl。

+0

我只是將東西管入perl中並調用另一個shell – Gordon 2011-02-08 16:07:35

1

然而,這很糟糕,您可能對組件1到4以及notdir爲基名稱做了dir的嵌套調用,並且可能使用模式匹配剝離最終斜槓。