Bash 意外标记“完成”附近出现语法错误;

Bash 意外标记“完成”附近出现语法错误;,bash,shell,Bash,Shell,我运行shell脚本,但返回一个错误“意外标记“done”附近的语法错误”,我想知道这是为什么?重要的是我可以在另一台计算机上运行它 请参见下面的我的代码: input=$1 folder=$2 output=$3 while read line do url=`echo $line | awk -F'\t' '{print $2}'` id=`echo $line | awk -F'\t' '{print $2}' | sed 's/http:\/\/buy.yahoo.com.tw\

我运行shell脚本,但返回一个错误“意外标记“done”附近的语法错误”,我想知道这是为什么?重要的是我可以在另一台计算机上运行它

请参见下面的我的代码:

input=$1
folder=$2
output=$3
while read line
do
  url=`echo $line | awk -F'\t' '{print $2}'`
  id=`echo $line | awk -F'\t' '{print $2}' | sed 's/http:\/\/buy.yahoo.com.tw\/gdsale\/gdsale.asp?gdid=//g'`
  ans=`echo $line | awk -F'\t' '{print $3}'`
  flag=`grep "$ans" $folder/$id".spec"`
  if [ -n "$flag" ]; then
      echo "yes   $line" >> $3
  else
      echo "no    $line" >> $3
  fi
done < $input
input=$1
文件夹=$2
产出=$3
读行时
做
url=`echo$line | awk-F'\t'{print$2}'`
id=`echo$line | awk-F'\t'{print$2}'\sed's/http:\/\/buy.yahoo.com.tw\/gdsale\/gdsale.asp?gdid=/g'`
ans=`echo$line | awk-F'\t'{print$3}'`
flag=`grep“$ans”$folder/$id.spec”`
如果[-n“$flag”];然后
回显“是的$line”>>3美元
其他的
回显“无$line”>>$3
fi
完成<$input

谢谢

如果它在一台机器上运行,而不是在另一台机器上运行,则不同机器上的脚本文件存在差异。可能您在一台计算机上有不同的行尾-使用
dos2unix

检查这两个行尾。您是否试图重定向从$input读取的输入?sed后面需要一个空格。这并不能解决您的问题,但您不需要标记。只要做:如果grep-q。。。;然后……另外,您可以使用不同的delimeter,而不是在sed中转义“/”s@http:/…@repl@<$输入看起来确实不正确。这意味着什么?