为什么 运行 bash 中的 for 循环会导致不需要的输出而不是循环?
Why running a for loop in bash resulting in undesired output and not a loop?
我正在尝试在 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”而不是“bash”。所以最有可能的是,当您执行 sh
.
时,您已经 运行 用破折号连接了这个脚本
要检查 sh
是否链接到“破折号”,运行
ls -la /bin/sh
如果输出是这样的:
lrwxrwxrwx 1 root root 4 Oct 18 19:37 /bin/sh -> dash
,它被符号链接到“破折号”。
现在,这应该可以解决问题。
- 首先使脚本可执行。
chmod +x <script_name>.sh
- 现在尝试运行使用脚本
./<script_name>.sh
这将 运行 bash 中的脚本。
我正在尝试在 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”而不是“bash”。所以最有可能的是,当您执行 sh
.
要检查 sh
是否链接到“破折号”,运行
ls -la /bin/sh
如果输出是这样的:
lrwxrwxrwx 1 root root 4 Oct 18 19:37 /bin/sh -> dash
,它被符号链接到“破折号”。
现在,这应该可以解决问题。
- 首先使脚本可执行。
chmod +x <script_name>.sh
- 现在尝试运行使用脚本
./<script_name>.sh
这将 运行 bash 中的脚本。