卡在 WSL2 中的 While 循环

Stuck with While loop in WSL2

我处于 Shell 的基础中。一般来说,我只使用 WSL2 进行 ssh。现在,我写了一个循环,所以我 google 举个例子来看看它是如何工作的。这是我的参考: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

问题可能是您从 Windows 复制粘贴了脚本并试图从 Linux 执行它。 Windows 除 NL 外还使用 CR 换行,其中 Linux 仅使用 '\n' 并发现前者 ('\r') 很奇怪。

从您的 WSL2 终端尝试这样的操作:

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

并执行 your-clean-script.sh