Re: [問題] bash script 中變數跟字面常數相加的問題

看板Linux作者 (aa)時間16年前 (2008/05/15 12:30), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
※ 引述《Edward.bbs@bbs.sayya.org (蒙古大夫 2.0)》之銘言: : ※ 引述《slchen1013.bbs@ptt.cc (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
文章代碼(AID): #18AxnYSu (Linux)
文章代碼(AID): #18AxnYSu (Linux)