Arrays 使用预先指定的变量值定义for循环

Arrays 使用预先指定的变量值定义for循环,arrays,unix,for-loop,Arrays,Unix,For Loop,下面我粘贴了我的代码的一小部分,它涵盖了我的问题。我正在Unix脚本中运行三个for循环。第一个循环n只在整数值上运行。第二个循环k也运行在整数值上,但我稍后将其更改为kappa,以表示所有值除以10,在本例中,范围为0:0.1:10 现在,我的问题涉及第三个循环。我是一个Unix编程的初学者,所以这可能是一个非常基本的问题,但我似乎无法理解。第三个循环应该覆盖预定义值的数组,即p=[0 1/15 1/12 1/10 2/15 1/6 1/5 1/4 1/3]。我已经将jmax定义为9,但是我不

下面我粘贴了我的代码的一小部分,它涵盖了我的问题。我正在Unix脚本中运行三个
for
循环。第一个循环
n
只在整数值上运行。第二个循环
k
也运行在整数值上,但我稍后将其更改为
kappa
,以表示所有值除以10,在本例中,范围为
0:0.1:10

现在,我的问题涉及第三个循环。我是一个Unix编程的初学者,所以这可能是一个非常基本的问题,但我似乎无法理解。第三个循环应该覆盖预定义值的数组,即
p=[0 1/15 1/12 1/10 2/15 1/6 1/5 1/4 1/3]
。我已经将
jmax
定义为9,但是我不知道如何将这些对应的
p
值设置为这个循环参数。基本上,我只想建立一个数组来保存这些值,然后分配它们,有人能告诉我一些方法吗

请注意:由于使用了
$j
的其他功能,我必须保持
for
循环的开始部分完好无损

代码部分:

   for ((n=0;n<${nmax};n++)); do # first loop
       for ((k=0;k<${kmax};k++)); do # second loop
           for ((j=0;j<${jmax};j++)); do # third loop

               # specify you job ......
               kappa=$(echo "scale=10; ${k}/10" | bc -l)

for((n=0;n这是创建数组并在其上循环的方式:

# create an array
p=(0 1/15 1/12 1/10 2/15 1/6 1/5 1/4 1/3)

# loop over the elements in the array
for j in "${p[@]}"; do
   echo "$j"
done

请参阅《高级Bash脚本编写指南》的一章。

如果脚本不特别需要数组,并且数组项不包含空格字符,则有一个更简单的解决方案:

# Assign all values that should be looped over to a normal string variable,
# with each value separated by a space
p="0 1/15 1/12 1/10 2/15 1/6 1/5 1/4 1/3"

# Loop over all values in p
for value in p; do
  # Access each value in p using $value
done

为了尽可能保持整个脚本的通用性,我更喜欢@dogbane的解决方案,但谢谢!我原以为这就是我想要的答案,但现在我意识到我需要保持for循环的定义完整(
for((j=0;开玩笑,我想我自己已经找到了答案,所以说我必须使用
for((j=0;j))