如何将开始变量传递给for循环,BASH
你好 我想知道如何正确地将变量传递给如何将开始变量传递给for循环,BASH,bash,variables,for-loop,Bash,Variables,For Loop,你好 我想知道如何正确地将变量传递给for循环。语法不重要,我只想传递变量并按2计数 问题是: 当我写下: r=0 ; for i in {"$r"..10..2}; do echo "Welcome $i times" ;done 我得到: Welcome {0..10..2} times 而不是: Welcome 0 times Welcome 2 times Welcome 4 times Welcome 6 times Welcome 8 times Welcome 10 times
for
循环。语法不重要,我只想传递变量并按2计数
问题是:
当我写下:
r=0 ; for i in {"$r"..10..2}; do echo "Welcome $i times" ;done
我得到:
Welcome {0..10..2} times
而不是:
Welcome 0 times
Welcome 2 times
Welcome 4 times
Welcome 6 times
Welcome 8 times
Welcome 10 times
提前感谢您提供的任何线索您不能在
{a..b}
语法中使用变量。但是您可以使用seq
请参见您不能在
{a..b}
语法中使用变量。但是您可以使用seq
参见使用变量作为循环边界的循环的一般格式为:
#!/bin/bash
a=2
b=10
increment=2
for ((i=$a; i<=$b; i+=$increment)); do
## <something with $i>
echo "i: $i"
done
使用变量作为循环边界的
for
循环的一般格式为:
#!/bin/bash
a=2
b=10
increment=2
for ((i=$a; i<=$b; i+=$increment)); do
## <something with $i>
echo "i: $i"
done
为了完整起见 代替
for i in {"$r"..10..2};
你可以试试
for i in $(eval echo {$r..10..2});
但是,我强烈建议您使用此解决方案,但请选择David的解决方案。为了完整性 代替
for i in {"$r"..10..2};
你可以试试
for i in $(eval echo {$r..10..2});
但是,我强烈建议您使用此解决方案,但请选择David的解决方案。mmm。。。是的,这是可能的:这取决于bash版本,我的意思是不能在大括号内使用变量。即使是那个文档也没有使用它。有关bash的最新信息,您应该看到@Alejandro
大括号扩展是在任何其他扩展之前执行的,并且其他扩展的任何特殊字符都会保留在结果中。这是严格的文本。Bash不会对扩展的上下文或大括号之间的文本应用任何语法解释。
也不会真正依赖您的链接作为指导,因为其中有一些解释很少的相当糟糕的示例,例如while true;do…
是比((;;))的更可读的无限循环;做…
。我不知道,非常感谢你启发我(:mmm…是的,这是可能的:这取决于bash版本请参见,我的意思是不能在大括号内使用变量。即使是该文档也没有使用它。有关bash的最新信息,您应该看到@Alejandro大括号扩展是在任何其他扩展之前执行的,其他扩展的任何特殊字符都保留在结果。它是严格的文本。Bash不会对扩展的上下文或大括号之间的文本应用任何语法解释。
也不会真正依赖您的链接作为指导,因为其中有一些非常糟糕的示例,解释很少,例如,while true;do…
是一个更具可读性的示例无限循环比(;);做…。我不知道,非常感谢你启发我(:谢谢你,…最后一个问题,我怎么能数到二?谢谢你,…最后一个问题,我怎么能数到二?非常感谢你的完整答案,祝你愉快!:)非常感谢你的完整答案,祝你愉快!:)可能的重复可能的重复