卡在 WSL2 中的 While 循环中

时间:2021-01-19 15:32:33

标签: wsl-2

我对 Shell 的基本知识非常了解。一般来说,我只将 WSL2 用于 ssh。现在,我写了一个循环,所以我用谷歌搜索一个例子来看看它是如何工作的。这是我的参考:https://ryanstutorials.net/bash-scripting-tutorial/bash-loops.php。问题是,即使我只是复制并粘贴他们的示例,我也会收到错误消息:

loop_learning.sh: line 4: $'\r': command not found
loop_learning.sh: line 10: syntax error near unexpected token `done'
loop_learning.sh: line 10: `done'

这是我刚刚复制粘贴的代码:

#!/bin/bash
# Basic while loop
counter=1
while [ $counter -le 10 ]
do
echo $counter
((counter++))
done
echo All done

1 个答案:

答案 0 :(得分:0)

问题可能是您从 Windows 复制粘贴脚本并尝试从 Linux 执行它。 Windows 使用 CR 和 NL 换行,而 Linux 只使用 '\n' 并且发现前者 ('\r') 很奇怪。

从您的 WSL2 终端尝试类似的操作:

cat your-copied-script.sh | sed 's/\r//g' > your-clean-script.sh

并执行 your-clean-script.sh