在bash脚本中使用参数和变量时SED中的错误

时间:2017-09-16 23:31:05

标签: linux bash shell sed

我有一个

的脚本
  1. 将字符串作为参数
  2. 使用字符串查找TeX文件
  3. 在for循环中 - 使用SED进行替换并编译TeX文件
  4. 替换包括更改标题名称(和连接),在编译后为输出文件提供唯一名称
  5. 当我正在运行它们时,命令正常工作,但是执行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或ex的任何变通方法也适用于我

1 个答案:

答案 0 :(得分:2)

您的for语句需要do。与for i in {2,5,8,11}; do中一样。