Arrays 使用预先指定的变量值定义for循环
下面我粘贴了我的代码的一小部分,它涵盖了我的问题。我正在Unix脚本中运行三个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,但是我不
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))