2015-11-23 150 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:我知道。我认为这是我写的,但增加了一些额外的词语来强调它。 –