他是我工作中每天都會接觸的好夥伴,是協助我解決大小問題的好幫手,且讓我跟大家分享我與BASH的每一天吧。
第一天,利用bc命令來取得數字字串中的特定欄位值。
[1] 利用bc命令來取得數字字串中的特定欄位值
因為要做一個自動build package的系統,所以想要根據source code的版本號碼來產生對應的package。Source code的版本是一串3個digital的數字,例如xxx。但是package需要將他切成x.xx版(分別是主版本號.副版本號),所以我想到的是利用算數的方法去切成我需要的欄位。
主版本號(MAJOR-VERSION)也就是百位數,就用版本號除以10取他的餘數;副版本號(MINOR-VERSION)也就是十位與個位數,就用版本號除以100取他的餘數。算數的動作在Linux BASH下可以透過bc指令來進行,求餘數就用'%',範例如下:
#VERSION 就是source code的版本號碼
MAJOR-VERSION=`echo $VERSION %10 | bc`
MINOR-VERSION=`echo $VERSION %100 | bc`
如果source code的版本號碼變長或是package需要的欄位有變,就改變除法(求餘數)的分母。
請問一下,我試用了echo $VERSION %10 | bc
這個指令,得到的是個位數,並不是百位數,請問是我有那打錯了嗎?
echo "123/100"|bc #1
echo "123%100"|bc #23
echo "123%10"|bc #3
應該直接用 echo $((VERSION % 10)) 就可以了,系統就不需要另外裝指令,不過如果是build package 的角度可能沒差吧