Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 在bash脚本中使用参数和变量时SED中出错_Linux_Bash_Shell_Sed - Fatal编程技术网

Linux 在bash脚本中使用参数和变量时SED中出错

Linux 在bash脚本中使用参数和变量时SED中出错,linux,bash,shell,sed,Linux,Bash,Shell,Sed,我有一个剧本 将字符串作为参数 使用字符串查找TeX文件 在for循环中-使用SED在中进行替换并编译TeX文件 替换包括更改头名称(和连接),这将在编译后为输出文件提供唯一的名称 当我实时运行这些命令时,它们工作正常,但是执行shell脚本时出现以下错误 ./batchscript: line 12: syntax error near unexpected token `sed' ./batchscript: line 12: ` sed -i "s|--jobname .*MPa|-

我有一个剧本

  • 将字符串作为参数
  • 使用字符串查找TeX文件
  • 在for循环中-使用SED在中进行替换并编译TeX文件
  • 替换包括更改头名称(和连接),这将在编译后为输出文件提供唯一的名称
  • 当我实时运行这些命令时,它们工作正常,但是执行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
    
    我尝试了几种语法变体。我也环顾四周,读到它可能必须做一些事情,shell负责将变量传递给sed,但它可能无法工作


    任何使用awk或ex的变通方法也可以对我有效

    您的
    for
    语句需要
    do
    。如{2,5,8,11}中i的
    ;do

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

    您的
    for
    语句需要一个
    do
    。如{2,5,8,11}中i的
    ;执行
    。哎呀!典型的星期六晚上语法错误。感谢您的
    for
    语句需要
    do
    。如{2,5,8,11}中i的
    ;执行
    。哎呀!典型的星期六晚上语法错误。谢谢