回文章列表
作者slchen1013.bbs@ptt.cc (aa) 看板: linux
標題Re: [問題] bash script 中變數跟字面常數相加的問題
時間批踢踢實業 (2008/05/15 Thu 12:30:27)
※ 引述《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
文章選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻