2013-10-11 74 views
1

我想使用的索引for循環在bash計算號碼,然後通過這個數字將sed的:猛砸數學然後通過輸出到sed的

for i in {1989..2009..1} 
do 
let year=i-1 
echo $year 
find /cygdrive/d/snowmodel/$i/snowmodel.par -type f -exec \ 
sed -i 's/iyear_init = 1989/iyear_init = '$year'/g' {} + 
done 

所以我想,以取代線iyear_init = 1989與行iyear_init = (the value of i-1, which should be the variable "year")

echo $year命令返回正確的值,但似乎當它傳遞給sed時,它將恢復爲像字符串一樣處理年份。

感謝您的任何幫助。

+1

把sed命令在雙引號,sed的-I「S/$ {I}一年......」 – Dru

+0

好找到答案後計算器建議的相關問題(我想我的搜索查詢間沒有」措辭很好)。 問題是我需要用雙引號替換單引號,因爲單引號內的變量不會在sed中被替換。以下工作: 因爲我在{} 1989..2009..1做 令 年= I-1 回聲$一年 找到/cygdrive/d/snowmodel_cig/cig_79/bias_runs/$i/snowmodel.par - 類型f -exec \ \t sed -i「s/iyear_init = i-1/iyear_init = $ year/g」{} + done –

+0

@ mr.cooper您應該刪除問題或將固定代碼作爲回答(並接受它) – SheetJS

回答

1

確定在stackoverflow建議後找到答案相關問題(我猜我的搜索查詢語句不是很好)。

問題是我需要用雙引號替換單引號,因爲單引號內的變量不會在sed中被替換。以下工作:

for i in {1989..2009..1} 
do 
let year=i-1 
echo $year 
find /cygdrive/d/snowmodel_cig/cig_79/bias_runs/$i/snowmodel.par -type f -exec \ 
sed -i "s/iyear_init = i-1/iyear_init = $year/g" {} + 
done