星期一, 6月 27, 2011

根據changelog取版號

以前上傳ppa之前,都是手動打指令,其實應該要自動化才對,今天跨出第一步。第一步當然就是取版號,deb的版號是從debian/changelog來的,所以要從這裡著手。

當前的版號只會在第1行,一開始就想到用 head -n 1來取,用 awk 印出第2欄。可是第2欄前後有 () 呢?該怎麼拿掉呢?不會是要用 sed 吧? 去 GNU awk manual 翻閱了一會,發現有 match 函數,可以用 re 來取 group,所以用 match($2, /\((.*)\)/,arr); 就可以去掉 ()。

去掉 () 之後,想到應該可以把 head 省掉,也用 awk 處理。NR 是一個特殊的變數,當處理一筆(行)時,這個值就會累加。把它限定為 1,就表示只處理第1行了。於是就可以湊出這麼一段script。

CHANGE=`awk 'NR==1 {match($2, /\((.*)\)/,arr);printf("gcin_%s_source.changes", arr[1]);}' debian/changelog`
ls -l $CHANGE

沒有留言: