2015-11-23 149 views
-1

我在製作bash腳本時遇到了麻煩。我正在編寫一個腳本來複制多個文件,然後用sed命令(例如= a/x)更改一個內部字,但它不起作用。linux bash腳本循環錯誤處理

#!/bin/bash 
for ((i = 20151122; i <=20151131; i++)) 
do 
    for ((j = 20151122; j <=20151131; j++)) 
    do 
    cp ~/lecture_2015_11_21.stream.smil "lecture_$i.stream.smil"; 
    cd ~/ 
    sed -i 's/$i/$j/g' lecture$j.stream.smil 
    done 
done 
+3

請在您的問題中指出您嘗試了什麼,以及(預期的)輸出。請參閱[如何提出一個好問題。](http://stackoverflow.com/help/how-to-ask) – agold

+0

嗨麥,你需要用更好的方式來表達你的問題。此外,您在shell腳本問題上標記了javascript。 – Alan

+0

你的代碼是什麼,錯誤是什麼? – Tempux

回答

0

對於SED,擺脫bash的值,你必須使用,而不是單引號,雙引號(這是primarly一個bash-報價問題):

錯誤:

sed -i 's/$i/$j/g' lecture$j.stream.smil 

右:

sed -i "s/$i/$j/g" lecture$j.stream.smil 

在這種情況下,你可以忽略它們放在一起:

sed -i s/$i/$j/g lecture$j.stream.smil 
+1

它與'sed'無關。這是如何引用字符串在* bash *中的工作。 –

+0

@ KarolyHorvath:我知道。我認爲這是我寫的,但增加了一些額外的詞語來強調它。 –