我对 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
答案 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