我正在尝试从用户那里获取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
答案 0 :(得分:1)
brace-expansion
的问题是它发生在其他所有事情之前,因此您希望发生的参数扩展(变量totalNodes
的扩展在该扩展期间不会发生。请参阅{{1页面,
EXPANSION
扩展在分割为单词后在命令行上执行。执行了七种扩展:大括号扩展,波浪扩展,参数和变量扩展,命令替换,算术扩展,单词拆分和路径名扩展。
扩展的顺序是:支撑扩展;代码扩展,参数和变量扩展,算术扩展和命令替换(以从左到右的方式完成);分词;和 路径名扩展。
所以你不会达到你想要实现的目标。由于您位于man bash
,因此可以使用bash
样式C
迭代,
for-loop