linux12shell编程 -->流程控制之for循环1

Posted FikL-09-19

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux12shell编程 -->流程控制之for循环1相关的知识,希望对你有一定的参考价值。

流程控制之for循环

一 、语法

#======~~__~~=====》Shell风格语法
for 变量名 [ in 取值列表 ]
do
	循环体
done

#===========》C语言风格语法
for ((初值;条件;步长))
do	
	循环体
done

1、shell风格的for,常用in列表方式

for i in 1 2 3
for i in {1,2,3}
for i in {1..9}
for i in {9..1}
for i in {a..z}
for i in {A..Z}
for i in {X..Z}
for i in $(命令)  # 例如:for i in $(head -10 /etc/passwd);do echo $i|cut -d: -f1,2;done
for i in $(find ...)

2、continue与for

continue:默认退出本次循环

break:默认退出本层循环

二、 案例

案例1:shell风格的for

for i in {1..10}
do
    echo $i
done

[root@openvpn day5]# cat for1.sh 
#! /bin/bash
for i in 123 "23" world
do
    echo hello $i
done
[root@openvpn day5]# ./for1.sh
hello 123
hello 23
hello world

案例2:c语言风格的for

for ((i=1;i<=6;i++))
do
    echo $i
done

案例3:检查内网存活的ip,使用&符号提升脚本的运行效率

#!/bin/bash

for i in {2..254}
do
    (ping -W 1 -c 1 192.168.12.$i &> /dev/null && echo 192.168.12.$i) &
done

[root@openvpn day5]# cat ping.sh 
#!/bin/bash

for i in {2..254}
do
    (ping -c1 192.168.15.$i &> /dev/null 

    if [ $? -eq 0 ];then
        echo "192.168.12.$i is up "
    
    else
        echo "192.168.12.$i is down"
    fi) &
done

案例4:编写文件类型测试脚本,支持多个参数

[root@egon /]# cat file.sh 
#!/bin/bash

for i in $@
do
	if [[ -d $i ]];then
    	echo "$i is directory."
	elif [[ -b $i  ]];then
    	echo "$i is block device."
    elif [[ -f $i ]];then
    	echo "$i is a regular file."
    else
    	echo "unknow."
    fi
done
[root@egon /]# chmod +x file.sh 
[root@egon /]# 
[root@egon /]# ./file.sh a.txt /etc /root /abc
a.txt is a regular file.
/etc is directory.
/root is directory.
unknow.

案例5:可以直接在命令行编写for循环

[root@egon /]#  for i in {1..10};do [ $i -eq 5 ] && continue || echo $i;done
[root@egon /]#  for i in {1..10};do [ $i -eq 5 ] && break || echo $i;done

[root@openvpn day5]# cat for2.sh 
 #! /bin/bash


 for i in {1..6}
 do
     if [ $i -eq 2 ];then
      continue
     fi 
     echo $i
done
[root@openvpn day5]# ./for2.sh 
1
3
4
5
6

以上是关于linux12shell编程 -->流程控制之for循环1的主要内容,如果未能解决你的问题,请参考以下文章

2017-12-5Linux基础知识(15)shell编程

linux12shell编程 -->shell变量

linux12shell编程 -- >基本数据类型

ubuntu12.04中用emacs进行shell编程怎么配置呢?

linux12shell编程 --> expect

Linux实战——Shell编程练习(更新12题)