Bash For 循环不工作

Bash For 循环不工作

我正在尝试执行这个简单的 bash 脚本,但出现语法错误。我在这里遵循了这个简单的文档https://www.cyberciti.biz/faq/bash-for-loop/但没有运气。我不确定我做错了什么?

#!/bin/bash
for i in 1 2 3 4 5
do
    echo "Count $i"
done;

错误:

setup.sh: 3: setup.sh: Syntax error: word unexpected (expecting "do")

我在这里从我的 Windows 子系统 Linux (WSL) 执行该脚本。

答案1

您的脚本文件是 DOS 文本文件。每行末尾额外的回车符会让人困惑bash(它看到do\r而不是do)。

使用诸如 之类的工具将其转换为 Unix 文本文件dos2unix,或者确保您的编辑器将其另存为 Unix 文本文件。

答案2

我刚刚在我的 centos 机器上执行了相同的脚本,该脚本可以工作文件。按照 Kusalananda 的建议,将脚本文件从 dos 转换为 unix。如果尚未安装 dos2unix 软件包,请安装它。然后你可以使用下面的命令来转换 $dos2unix (文件名)

答案3

#!/bin/bash
for i in 1 2 3 4 5
do
    echo "Count $i"
done;

更好的循环方式是:

for i in {1..5}; do
    echo "Count $i";
done

这样您就不必指定所有这些数字。那么,如果您必须使用您的方法循环遍历 100 个数字,您会怎么做?

相关内容