为什么在bash中运行for循环会导致不希望的输出而不是循环?



我试图在Bash shell中编写一个for循环。这是我想出来的:

for i in {0..20..5}
do
echo "Number: $i"
done

但是输出是:

Number: {0..20..5}

我也试过这个代码:

N=10
for i in 1 2 3 4 5 .. $N
do
echo "Welcome $i times"
done

但是在这种情况下,输出也是:

Welcome 1 times
Welcome 2 times
Welcome 3 times
Welcome 4 times
Welcome 5 times
Welcome .. times
Welcome 10 times

我想写一个for循环,在那里我可以取极限以及自增或自减值

这是完整的脚本:

#! usr/bin/bash
N=10
for i in 1 2 3 4 5 .. $N
do
echo "Welcome $i times"
done
for i in {0..20..5}
do
echo "Number: $i"
done

脚本似乎是正确的。

然而,正如你在评论中指出的那样,用sh运行脚本似乎是这里的问题。

在基于Debian的发行版中,sh现在被链接到"dash"而不是"羞涩"。因此,当您执行sh时,很可能已经使用破折号运行了此脚本。

命令

查看sh是否链接到"&;dash&;"
ls -la /bin/sh

如果输出是这样的:lrwxrwxrwx 1 root root 4 Oct 18 19:37 /bin/sh -> dash,它的符号链接到&;dash&;

现在,问题应该解决了。

  1. 先让脚本可执行
chmod +x <script_name>.sh
  1. 尝试现在运行脚本
./<script_name>.sh

这将在bash中运行脚本。

相关内容

  • 没有找到相关文章

最新更新