[内容] Linux while 循环

案例一:无限循环

#!/bin/bash

while ((1));
do
        sleep 1
        echo "infinite loop"
done

或者:

#!/bin/bash

while :
do
        sleep 1
        echo "infinite loop"
done

案例二:从 1 计数到 5

#!/bin/bash

i=1;n=5
while ((i <= n))
do

        echo $i
        let i++

done

或者:

#!/bin/bash

i=1;n=5
while [[ $i -le $n ]]
do

        echo $i
        let i++

done

案例三:从 1 加到 5

#!/bin/bash

i=1
while ((i <= 5));
do

        let sum=$sum+$i
        let i++

done

echo $sum

或者:

#!/bin/bash

i=1
while [[ $i -le 5 ]];
do

        let sum=$sum+$i
        let i++

done

echo $sum

案例四:输入多个数字,每输入 1 个数字后就需要按下回车,通过同时按下 “Ctrl” 键和 “D” 键结束输入,并将多个数字相加

#!/bin/bash

sum=0
echo 'Please input number, you must press 'enter' after inputting each number, press 'ctrl' and 'd' at the same time to end the input"

while read num
do
        let sum=$sum+$num
done

echo $sum

案例五:阅读文件 (一次性阅读文件里的全部内容)

#!/bin/bash

while read line
do
        echo $line

done < test.txt

或者:

#!/bin/bash

cat test.txt | {
while read line
do
        echo $line

done }

或者:

#!/bin/bash

cat test.txt | while read line
do
        echo $line

done

(补充:这里以阅读 test.txt 文件为例)

案例六:阅读文件 (1 列接着 1 列阅读,并可以把每 1 列的内容分开)

6.1 创建要被阅读的文件

# vi test.txt

创建以下内容:

no1 user1 test1.txt
no2 user2 test2.txt
no3 user3 test3.txt
no4 user4 test4.txt
no5 uesr5 test5.txt

6.2 阅读文件 (1 列接着 1 列阅读,并可以把每 1 列的内容分开)

# cat test.txt | while read no user file ;do echo $no $file;done
no1 test1.txt
no2 test2.txt
no3 test3.txt
no4 test4.txt
no5 test5.txt

问题排查的方法

方法一:按时间顺序分析 (Chronological Analysis)

根据问题发生的时间线,回溯最近发生了哪些情况和做了哪些变更,通过回溯找到发生问题的原因

方法二:深度价值分析 (Pain Value Analysis)

根据事件的重要性和特点找到其核心点,并根据核心点分析产生问题的核心

方法三:KTKT 分析 (Kepner and Tregoe)

对发生的问题进行定义,对问题的特征进行描述,通过定义和特征逐一排查,找到可能导致问题的原因

方法四:头脑风暴 (Brainstorming)

大家一起什么都想,快速获得任何和问题相关的信息,但是得到信息往往不够客观

方法五:鱼骨图 (Ishikawa Diagrams)

将发生的问题看成一个主线,分析每一条汇入这条主线的分线,这些分线都有可能导致最后出现在主线上的问题,最终找到导致主线问题的原因在哪条分线上

方法六:帕累托分析 (Pareto Analysis)

分析哪些问题影响最大,先解决所有问题中最重要的那 20%,因为往往解决最重要的 20% 问题可能就会达到 80% 的效果

方法七:5 个为什么 (5 Why)

5 个为什么只是一个抽象的概念,真实情况是对发生问题的原因一只追问下去,先问导致问题的原因是什么,根据这个原因再问导致这个原因的原因是什么,直到问到根本原因以后才停止,此方法由日本丰田公司大野耐一发明。使用此方法需要注意:
1) 避免使用借口回答问题
2) 避免在追问的过程中牵扯到人的心理
3) 避免回答问题时推卸责任
4) 避免各个问题之间没有层级关系