2010-03-10 133 views
0

我試圖創建一個使用信息從路徑創建一個相關的轉名Makefile文件的路徑匹配字符串/目錄。假設我有兩個不同的可能路徑:如何使用bash腳本

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

如果「主」的路徑進行檢測,我想檢測並追加「主」的轉名。如果在路徑中檢測到「dev」,我想檢測並將「ver2」追加到rpm名稱。

我是新來的shell腳本和真的沒有從哪裏開始一個好主意。我可以很容易地做到這一點像python,但它的一個Makefile,所以我需要在shell中。

「主」的路徑將是恆定的,但如果「主」不存在,dev的路徑名需要被提取。下面的幾個刈例子:

在/ usr /本地的/ home/JSMITH /碼/主 在/ usr /本地的/ home/JSMITH /代碼的/ dev/ver_usa 在/ usr /本地的/ home/JSMITH /代碼的/ dev/ver_mexico /usr/local/home/jsmith/code/dev/ver3

如果存在「dev」,則需要提取「ver_usa」,「ver_mexico」,「ver3」等。目錄名稱需要提取將完全遵循「開發」。

回答

2

這樣的事情,假設「主」和「版本2」不恆定

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 
+0

我加入更詳細的問題。 「ver2」不一定是恆定的,但需要提取並存在於「../dev/」 – user16738 2010-03-10 07:14:43

+0

好,所以它們不是恆定的。看我的編輯。 – ghostdog74 2010-03-10 07:24:40

0

使用grep和檢查返回值?

此外,在Makefile中,你可以運行蟒蛇。

0

它看起來像路徑的最後一個元素始終是一個你想要的。

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

rpmname=$rpmname+$(basename pathname)