為什麼這篇shell script變數字串相加鄉民發文收入到精華區:因為在shell script變數字串相加這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者slchen1013 (aa)看板Linux標題Re: [問題] bash script 中變數...
※ 引述《[email protected] (蒙古大夫 2.0)》之銘言:
: ※ 引述《[email protected] (aa)》之銘言:
: > hi,大家
: > m=`grep -n %BLOCK\ SPECIES_POT ${JOB}.cell | sed 's/:%BLOCK\ SPECIES_POT/ /g'`
: > n=`grep -n %ENDBLOCK\ SPECIES_POT ${JOB}.cell | sed 's/:%ENDBLOCK\ SPECIES_POT/
: > /g'`
: m=`awk '/%BLOCK\ SPECIES_POT/ {print NR}' ${JOB}.cell`
: 這樣會不會比較簡單?
清爽許多...大感恩
我後來想一下可能是因為我用 sed 的取代功能把多餘字串刪掉, 結果就在數字後
面多放了一個空白字元,造成變數沒辦法做加減
但是即使我把取代從 /parttern/ /g 改成 /pattern//g
在命令列上可以看到數字
但是這個變數還是不能拿來運算
我想我可能要研究一樣這樣的取代, 到底加了什麼東西在數字後面
: > POTpos=$(($m+1))
: > echo $m
: > echo $n
: > echo $POTpos
: > 如上, 我用 grep 從某個檔案的找出特定 pattern 所在的行數,
: > 然後存在 m 跟 n
: > 接下來我要把 m + 1, 所以我就用了 POTpos=$(($m+1))
: > 可是 echo 出來的值卻是空的
: 不知,我這邊是正常。
: 能確定只有一行 %BLOCK SPECIES_POT 嗎?否則要用 for loop 去
: 巡禮一下。
我在 cygwin 下的 bash 3.2.x 也是正常的=.=
可是 mac 下的 bash 2.5.x 跟在主要機器上的 bash 3.0 都不能用
主要機器可能是 redhat 系列分支,因為 /etc/ 底下有 yum 的設定檔
總之,用您的方法
初步看起來是可以正常做運 算了
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.13.111.50