有人可以帮我解决这个shell脚本背后的方法吗?

时间:2018-05-02 20:35:21

标签: linux shell

有人可以帮我解决这个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"

1 个答案:

答案 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)。