for循环范围,其中上限取自用户

时间:2017-03-22 06:56:45

标签: bash shell

我正在尝试从用户那里获取for循环限制。当我传递该变量时,它没有迭代它

for num in {1..$totalNodes}

但是当我提供硬编码值时

for num in {1..10}

运行正常。任何人都可以帮忙。

这是我的代码:

#!/bin/bash
#!/bin/sh
read -p "Enter the total no of nodes : " totalNodes
read -p "Enter the no of Master nodes : " masterNodes

echo $totalNodes
echo $masterNodes

for num in {1..5}
    do
        echo "$num"

        read -p "Enter the Node $num IP : " node[$num]

    done

echo $node

1 个答案:

答案 0 :(得分:1)

brace-expansion的问题是它发生在其他所有事情之前,因此您希望发生的参数扩展(变量totalNodes的扩展在该扩展期间不会发生。请参阅{{1页面,

  

EXPANSION

     

扩展在分割为单词后在命令行上执行。执行了七种扩展:大括号扩展,波浪扩展,参数和变量扩展,命令替换,算术扩展,单词拆分和路径名扩展

     

扩展的顺序是:支撑扩展;代码扩展,参数和变量扩展,算术扩展和命令替换(以从左到右的方式完成);分词;和          路径名扩展。

所以你不会达到你想要实现的目标。由于您位于man bash,因此可以使用bash样式C迭代,

for-loop