bash脚本中的错误。意外令牌附近的语法错误

时间:2015-06-03 11:57:06

标签: bash shell

你知道我的脚本有什么问题,因为我总是得到错误消息:

position frac1 frac2
: command not found: 
'/s1_met.sh: line 3: syntax error near unexpected token `do
'/s1_met.sh: line 3: `for lineF1 in $(cat $1); do

代码在这里:

export IFS=$'\n'
echo "position frac1 frac2";  
for lineF1 in $(cat $1); do
    if [ $(echo $lineF1 | cut -b 1-2) = "##" ]; then
       echo "skip line" >&2;
    else
       startF1=$(echo $lineF1 | cut -f 4);
       stopF1=$(echo $lineF1 | cut -f 5);
       fracF1=$(echo $lineF1 | cut -f 9 | cut -d ";" -f 4 | cut -d "=" -f 2);

       lineF2=$(grep "$startF1" $2);
       if [ -z "$lineF2" ]; then
          echo "position $startF1 cannot be found" >&2;
       else
          fracF2=$(echo $lineF2 | cut -f 9 | cut -d ";" -f 4 | cut -d "=" -f 2);
          echo "$startF1 $fracF1 $fracF2";
       fi;
    fi
done;

1 个答案:

答案 0 :(得分:-1)

它没有任何问题,你不能用BASH运行它。

编辑说你需要检查你的行结尾,你的评论下面的^ M意味着你在行上有额外的字符。见这里。

https://stackoverflow.com/tags/bash/info

尝试将“shebang”行放在脚本shebang docs

要执行此操作,请运行which bash,它会告诉您/bin/bash之类的内容。那么你的脚本应该是:

#!/bin/bash
echo "I'm running with bash!"

试试看,你的语法还可以。