【2018.07.13学习笔记】【linux高级知识 20.10-20.15】

雨燕双飞 提交于 2019-12-09 21:12:32

20.10 for循环

语法格式:

for 变量 in 条件(值范围); do 语句 ;done

示例:计算1到10的累加和

#!/bin/bash
sum=0
for i in 'seq 1 10'    //seq 1 10 为结果集,是以空格号或回车为间隔遍历值。
do
    sum=$[$sum+$i]
done
   echo $sum

示例:针对文件的循环,遍历每个ls的结果值判断是否为目录,然后ls该目录。

#!/bin/bash
cd /etc/
for a in 'ls /etc/'    //a是ls /etc/ 结果里的值每个遍历,是以空格为间隔的
do
   [-d $a] && ls $a
done

示例:/lgs/ 目录下 touch 1 2 touch 3\ 4.txt (文件名是3 4.txt,脱义字符后是空格)

for i in 'ls ./'
do
   echo $i
done

##执行结果是
1
2
3
4.txt    //会把文件3 4.txt 当成两个文件 3和 4.txt。验证出是以空格为间隔遍历条件里的值

20.11/20.12 while循环

语法:

while 条件 ;do 语句; done

示例:

#!/bin/bash   //为了让脚本不意外中止,用screen中运行脚本
while :   //while true或者while 1的意思,表示永久循环
do
   load='w|head -1|awk -F 'load average: ' '{print $2}' |cut -d. -f1 '
   if[ $load -gt 10 ]
   then
      /usr/local/mail.py xxx@xxx "load high"  "$load"
   fi
   sleep 30 //30秒检查一次
done

示例:

#!/bin/bash
while :
do
   read -p "please input a number: " n
   if[ -z $n ]
   then
     echo "你需要输入东西"
	 continue   //继续执行下一次的循环
   fi
   n1='echo $n|sed 's/[0-9]//g''
   if [ ! -z $n1 ]
   then
     echo "你只能输入数字"
	 continue
   fi
   break  //跳出循环体
done
echo $n

20.13 break跳出循环

#!/bin/bash
for i in 'seq 1 10'
do
  echo $i
  if[ $i -eq 3 ]
  then
    break  //跳出所有循环
  fi
  echo $i  //i=3时,这句不执行了,因为上面跳出for循环体了
done
echo aaaaaa

##结果
1
1
2
2
3
aaaaaa

20.14 continue结束本次循环

忽略本次循环continue之下的语句,直接进入下一次循环

#!/bin/bash
for i in 'seq 1 10'
do
  echo $i
  if [ $i==3 ]
  then
    continue  //直接进入i=4的循环
  fi
 echo $i
done
echo$i

##结果
1
1
2
2
3
4
4
5
5
5

20.15 exit退出整个脚本

#!/bin/bash
for i in 'seq 1 5'
do
  echo $i
  if [ $i==3 ]
  then
      exit   //i=3,直接不执行以后所有的代码,退出脚本
  fi
  echo $i
done
echo aaaaaa   //i=3不执行该语句

##结果
1
1
2
2
3
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!