有人可以帮我解决这个linux命令背后的方法吗?我知道输出是什么,只需要知道你是如何解决它们的。
#!/bin/sh
i=0
for a in 9 8 7 6 5 4
do
j=1
for b in 1 2 3 4
do
let "j+=2"
done
let "i+=1"
done
echo "i=$i j=$j"
答案 0 :(得分:1)
拳头,缩进有助于使其更清晰:
#!/bin/sh
i=0
for a in 9 8 7 6 5 4
do
j=1
for b in 1 2 3 4
do
let "j+=2"
done
let "i+=1"
done
echo "i=$i j=$j"
从不使用a和b变量,除了使外循环执行6次(列表中的每个数字一个循环9 8 7 6 5 4)并使内循环执行4次(一个循环)对于列表中的每个数字1 2 3 4)。
外部循环通过循环将6次中的每一次(初始化为零)加1,最后得到值为6.
内循环通过循环将4次中的每一次的值加2。即使内循环本身被执行了6次,由于在每次执行内循环之前j被重新初始化为1,因此j的最终值仅为9(1 + 2 + 2 + 2 + 2)。