下面我粘贴了一小部分代码,其中涵盖了我的问题。我在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)
非常感谢!
答案 0 :(得分:1)
这是你如何创建一个数组并循环它:
# 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
请查看Advanced Bash-Scripting Guide的Arrays章节。
答案 1 :(得分:0)
如果您不需要为脚本特别需要数组,并且您的数组条目不包含空格字符,则可以使用更简单的解决方案:
# 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