iT邦幫忙

DAY 1
3

我與BASH shell scripting的每一天系列 第 1

我與BASH的每一天 - [1]利用bc命令來取得數字字串中的特定欄位值

他是我工作中每天都會接觸的好夥伴,是協助我解決大小問題的好幫手,且讓我跟大家分享我與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需要的欄位有變,就改變除法(求餘數)的分母。


下一篇
我與BASH的每一天 - [2]直取字串變數中的特定欄位值
系列文
我與BASH shell scripting的每一天31
0
yamsuger
iT邦新手 5 級 ‧ 2012-10-16 11:08:13

請問一下,我試用了echo $VERSION %10 | bc這個指令,得到的是個位數,並不是百位數,請問是我有那打錯了嗎?

0
953904
iT邦新手 3 級 ‧ 2012-11-03 09:43:08

echo "123/100"|bc #1
echo "123%100"|bc #23
echo "123%10"|bc #3

0
fashaun0415
iT邦新手 5 級 ‧ 2017-06-16 10:03:04

應該直接用 echo $((VERSION % 10)) 就可以了,系統就不需要另外裝指令,不過如果是build package 的角度可能沒差吧

我要留言

立即登入留言