2017-09-16 115 views
0

使用参数和变量时,我有一个脚本错误SED在bash脚本

  1. 需要一个字符串作为参数
  2. 使用字符串找到一个TeX的文件
  3. 在for循环 - 使用SED使取代在并编译的TeX文件
  4. 换人包括改变的报头的名称(和连接),这也是输出文件一个唯一的名称编译后

的命令是否正常工作,当我活运行它们,但是执行shell脚本是给我下面的错误

./batchscript: line 12: syntax error near unexpected token `sed' 
./batchscript: line 12: ` sed -i "s|--jobname .*MPa|--jobname ${filename}${i}MPa|g" $CURRENTFILE".tex"' 

的脚本如下

DIR=`pwd` 
filename=$1 
CURRENTFILE=$DIR/$filename 
for i in {2,5,8,11}  
    sed -i "s|--jobname .*MPa|--jobname ${filename}${i}MPa|g" $CURRENTFILE".tex" 
    sed -i "s|pgfplotstableread{.*MPa.dat}|pgfplotstableread{${i}MPa.dat}|g" $CURRENTFILE".tex"               
    arara $CURRENTFILE".tex" 
done 

我尝试了几个语法变化。我也环顾四周,看到它可能不得不做一些负责将变量传递给sed的shell,它可能不起作用。

用awk或前任何变通办法也可以为我工作

+3

您的'for'语句需要'do'。正如在“我在{2,5,8,11}”中那样; do'。 – Jonesinator

+0

糟糕!经典星期六晚上的语法错误。谢谢 –

回答

2

for语句需要一个do。如在for i in {2,5,8,11}; do中。