shell 学习之for语句

简介:

一、for语法

for 变量 in 列表;do
    循环体
done

二、常见用法
1、for用来遍历目录
  

1
2
3
4
5
6
7
8
9
10
#!/bin/bash
#Version:0.1
#Author:lovelace
#pragram:This scripts is print all files in directory
#difine an varibale
DIR= "/home/scripts/51cto"
#All files in directory traversal
for  in  $( ls  $DIR); do
echo  $f
done

 

输出结果为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[root@lovelace  for ] # ./dir.sh
1.sh
2curl.sh
adduer.sh
aliquot.sh
argument.sh
argusum.sh
curl.sh
dd .sh
dirper.sh
info.sh
info.tt
ipcheck.sh
jugement.sh
netcard.sh
sum .sh
test .sh
The
Frist
week
The
Third
week

 

2、for ((初始条件;终止条件;异动项))
do
   命令区域
done
   

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash
#Version:0.1
#Author:lovelace
#pragram:This pragram is and the sum from 1 to 100
#define an integer
declare  -i i
#loops
for  ((i=1;i<=10;i=i+1))
do
let  sum +=1
done
echo  "The result is:"  $ sum


输出结果为:

1
2
[root@lovelace  for ] # ./sorsum.sh
The result is: 10

3、for 无穷循环
    for ((;1;));do
      命令区域
     done

    

1
2
3
4
5
[root@lovelace  for ] # cat forover.sh
#!/bin/bash
for  ((;1;)); do
echo  "forever..."
done

输出结果:

1
2
3
4
5
6
7
8
[root@lovelace  for ] # ./forover.sh
forever...
forever...
forever...
forever...
forever...
forever...
forever...

三、关于break和continue


break、continue 一样可以运用在for while until select这4中循环中,

break :退出循环  提前退出
continue:提前进入下一轮循环 ,continue后面的语句将不再执行

示例(计算1到100内能被3整除的数之和):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash
#Verson:0.1
#Auther:lovelace
#Pragram:This pragram is calculation from 1 to 100 aliquot 3 sum
#
declare  -i i=0
declare  -i  sum =0
#use loop traverse from 1 to 100
while  [ $i -lt 100 ]; do
let  i++
#jugement aliqotu 3 or not
if  [ $(($i%3))  - eq  0 ]; then
let  sum +=i
else
continue
fi
done
#print sum
echo  "from 1 to 100 aliquot 3 sum is $sum"

输出结果为:

1
2
[root@lovelace  for ] # ./three.sh
from 1 to 100 aliquot 3  sum  is 1683

四、再次重提如何生成列表
如何生成列表:
1、整数列表  
     {1..100}  生存1到100的列表
2、seq 
    seq 10 1到10
    seq 5 10 5到10
    seq 5 10 2 返回列表为6 8 10
3、`ls /etc`

 

生成列表不单单只有我们列出的这些,实际案例上需要灵活运用

示例:(分别显示当前系统上所有默认shell中为bash的用户和默认为nologin的用户)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
[root@lovelace  for ] # cat checkbash.sh
#!/bin/bash
#Version:0.1
#Author:lovelace
#pragram:This scripts is check user bash and print it
#取出使用bash的用户个数
bashline=` grep  'bash$'  /etc/passwd  wc  -l`
#取出使用nologin的用户个数
nologinline=` grep  'nologin$'  /etc/passwd  wc  -l`
#取出bash用户列表
bashuser=` grep  'bash$'  /etc/passwd  cut  -d: -f1`
#取出nologin用户列表
nologin=` grep  'nologin$'  /etc/passwd  cut  -d: -f1`
#遍历使用bash的用户并打印出来
for  in   $bashuser; do
echo  "bash users is:$x"
done
#遍历使用nologin的用户并打印出来
for  in   $nologin; do
echo  "nologin users is:$y"
done
#结果如下
[root@lovelace  for ] # ./checkbash.sh
bash  users  is:root
bash  users  is:nick
bash  users  is:kale
bash  users  is:user2
bash  users  is:user3
bash  users  is:user4
bash  users  is:user5
bash  users  is:user6
bash  users  is:user7
bash  users  is:user8
bash  users  is:user9
bash  users  is:user10
bash  users  is:mark
bash  users  is:lovelace
bash  users  is:lovetest
nologin  users  is:bin
nologin  users  is:daemon
nologin  users  is:adm
nologin  users  is:lp
nologin  users  is:mail
nologin  users  is:uucp
nologin  users  is:operator
nologin  users  is:games
nologin  users  is:gopher
nologin  users  is: ftp
nologin  users  is:nobody
nologin  users  is:nscd
nologin  users  is:vcsa
nologin  users  is:pcap
nologin  users  is:ntp
nologin  users  is:dbus
nologin  users  is:avahi
nologin  users  is:rpc
nologin  users  is:mailnull
nologin  users  is:smmsp
nologin  users  is:sshd
nologin  users  is:oprofile
nologin  users  is:rpcuser
nologin  users  is:nfsnobody
nologin  users  is:xfs
nologin  users  is:haldaemon
nologin  users  is:avahi-autoipd
nologin  users  is:gdm
nologin  users  is:sabayon
nologin  users  is:jack

 

 本文转自lovelace521 51CTO博客,原文链接:http://blog.51cto.com/lovelace/1211373,如需转载请自行联系原作者

 

相关文章
|
6月前
|
关系型数据库 MySQL Shell
shell学习(十七) 【mysql脚本备份】
shell学习(十七) 【mysql脚本备份】
49 0
|
1月前
|
监控 Unix Shell
shell脚本编程学习
【10月更文挑战第1天】shell脚本编程
60 12
|
6月前
|
Linux Shell 文件存储
【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(深入df和dh的区别和探索)
【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(深入df和dh的区别和探索)
183 1
|
6月前
|
监控 Linux Shell
【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(排查问题指令 - 下)
在线上排查问题时,查询日志、查看系统配置和分析操作系统信息是至关重要的。这些操作可以帮助我们深入了解软件和服务的兼容性,并解决潜在的问题。在本次学习中,我们将介绍并深入学习一些我在处理类似问题时常用的指令。通过掌握这些指令,你将能够更加高效地定位和解决线上问题,提高系统的稳定性和性能。让我们一同进入这个学习过程吧!
80 0
【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(排查问题指令 - 下)
|
4月前
|
Shell Linux
Shell 脚本编程学习
Shell 脚本编程学习
36 0
|
5月前
|
人工智能 运维 中间件
Linux-shell简单学习
Linux-shell简单学习
29 0
|
6月前
|
运维 Shell Python
Shell和Python学习教程总结
Shell和Python学习教程总结
|
6月前
|
机器学习/深度学习 Shell Linux
shell 学习记录
shell 学习记录
29 0
|
6月前
|
Shell
shell学习(六) 【case多条件分支语句】
shell学习(六) 【case多条件分支语句】
90 1
|
6月前
|
Shell 应用服务中间件 nginx
shell学习(七) 【shell 函数】
shell学习(七) 【shell 函数】
37 1