While 循环中的语法错误

While 循环中的语法错误

这是我的代码 -

#!/bin/bash
find FileFrom -type f -name "*" > prodRefresh.txt
filename="prodRefresh.txt"
while read -r line; do
    name=$line
    echo "Name read from file - $name"
done < $filename

尝试通过命令提示符执行时,出现以下错误 -

copyAndCreate.sh: line 7: syntax error near unexpected token `done'
copyAndCreate.sh: line 7: `done < $filename'

请帮我解决这个问题。谢谢

答案1

如果您的文件有 Windows 样式的行尾 ( \r\n) 而不是常规的 Unix 样式 ( \n),就会发生这种情况。您可能在 Windows 环境中编辑过此文件,并且更改了行尾,而额外的内容\r会弄乱您的脚本。解决方案是修复行尾:

dos2unix copyAndCreate.sh

或者,如果您没有dos2unix,请尝试:

sed -i 's/\r//' copyAndCreate.sh

相关内容