Linux之脚本编程---for及while应用

简介:

过程式编程

选择执行

顺序执行: if, case

循环执行: for, while, until


for循环列表

1
2
3
4
5
6
7
8
for  in  LIST;  do
     循环体
done
 
for  in  LIST
do
     循环体
done

wKioL1m0D4WwE7hkAAApDfCzWpM544.png


while循环

1
2
3
4
5
6
7
8
9
10
11
12
while  CONDITION;  do
     循环体
done
 
while  CONDITION
do
     循环体
done
 
CONDITION 循环控制条件,每执行一次循环体,需要再次进行判断 
    true 时,执行一次循环
    false 时,退出循环

练习:100以内所有正整数之和

练习: 100以内所有偶数和

练习:添加10个用户

练习:通过ping命令探测172.16.250.1-254范围内的所有主机的在线状态.用while循环

练习:打印9x9乘法表

练习:利用RANDOM生成10个随机数,输出这10个数字,并显示其中最大者和最小者


练习:100以内所有正整数之和

1
2
3
4
5
6
7
8
#!/bin/bash
#
declare  -i  sum =0
for  in  {1..100};  do
     let  sum =$ sum +1
done
echo  $i
echo  "summary: $sum"
1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash
#
declare -i sum= 0
declare -i i= 1
while  [ $i -le  100  ];  do
     sum=$[$sum+$i]
     let i++
done
 
echo $i
echo  "summary: $sum"

练习: 100以内所有偶数和

1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash
#
declare -i sum= 0
declare -i i= 2
while  [ $i -le  100  ];  do
     sum=$[$sum+$i]
     let i+= 2
done
 
echo $i
echo  "summary: $sum" 

练习:添加10个用户user1-user10

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash
#
declare  -i i=1
declare  -i  users =0
while  [ $i - le  10 ];  do
     id  user$i &>  /dev/null
     retval=$?
     [ $retval - ne  0 ] &&  useradd  user$i &>  /dev/null
     [ $? - eq  0 ] &&  echo  "Add user user$i finished"  &&  let  users =$ users +1
done
 
echo  "Add $users users"

练习:通过ping命令探测172.16.250.1-254范围内的所有主机的在线状态.用while循环

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/bash
#
declare -i IP= '172.16.250.'
declare -i i= 1
declare -i uphosts= 0
declare -i downhosts= 0
while  [ $i -le  254  ];  do
     if  ping -c  1  -w  1   $IP$i &> /dev/ null ; then
         echo  "$IP$i is up"
         let uphosts++
     else
         echo  "$IP$i is down"
         let downhosts++
     fi
done
 
echo  "uphosts: $uphosts"
echo  "downhosts: $downhosts"

练习:打印9x9乘法表

1
2
3
4
5
6
7
8
9
#!/bin/bash
#
for  in  { 1 .. 9 };  do
     for  in  $(seq  1  1  $i);  do
         echo -ne  "${j}X${i}=$[$i*$j]\t"
         j=$(($j+ 1 ))
     done
     echo
done
1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash
#
declare -i i= 1
while  [ $i -le  9  ];  do
     declare -i j= 1
     while  [ $j -le $i ];  do
         echo -ne  "${j}X${i}=$[$i*$j]\t"
         j=$(($j+ 1 ))
     done
     echo
     i=$(expr $i +  1 )
done   

练习:利用RANDOM生成10个随机数,输出这10个数字,并显示其中最大者和最小者

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
#!/bin/bash
#
declare -i max=
declare -i min=
declare -i i= 1
declare -i random
while  [ $i -le  10  ];  do
     random=$RANDOM
     echo $random
 
     if  [ $i -eq  1  ]; then
         max=$random
         min=$max
     fi
 
     if  [ $i -gt  1  ]; then
         if  [ $random -gt $max ]; then
             max=$random
         fi
         if  [ $random -lt $min ]; then
             min=$random
         fi
     fi
     let i++
done
 
echo  "max: $max"
echo  "min: $min"
==========================================
#!/bin/bash
#
declare -i max=
declare -i min=
declare -i i= 1
declare -i random
while  [ $i -le  10  ];  do
     random=$RANDOM
     echo $random
 
     if  [ $i -eq  1  ]; then
         max=$random
         min=$max
     fi
 
     if  [ $random -gt $max ]; then
         max=$random
     fi
     if  [ $random -lt $min ]; then
         min=$random
     fi
     let i++
done
 
echo  "max: $max"
echo  "min: $min"










本文转自 lccnx 51CTO博客,原文链接:http://blog.51cto.com/sonlich/1964037,如需转载请自行联系原作者
目录
相关文章
|
13天前
|
存储 Shell Linux
Linux Bash 脚本中的 IFS 是什么?
【4月更文挑战第25天】
20 0
Linux Bash 脚本中的 IFS 是什么?
|
2天前
|
Linux API
Linux系统编程之文件编程常用API回顾和文件编程一般步骤
Linux系统编程之文件编程常用API回顾和文件编程一般步骤
Linux系统编程之文件编程常用API回顾和文件编程一般步骤
|
4天前
|
Linux 编译器 调度
xenomai内核解析--双核系统调用(二)--应用如何区分xenomai/linux系统调用或服务
本文介绍了如何将POSIX应用程序编译为在Xenomai实时内核上运行的程序。
20 1
xenomai内核解析--双核系统调用(二)--应用如何区分xenomai/linux系统调用或服务
|
4天前
|
消息中间件 存储 Linux
linux实时应用如何printf输出不影响实时性?
本文探讨了Linux实时任务中为何不能直接使用`printf(3)`,并介绍了实现不影响实时性的解决方案。实时任务的执行时间必须确定且短,但`printf(3)`的延迟取决于多个因素,包括用户态glibc缓冲、内核态TTY驱动和硬件。为确保实时性,通常将非实时IO操作交给低优先级任务处理,通过实时进程间通信传递信息。然而,即使这样,`printf(3)`在glibc中的实现仍可能导致高优先级任务阻塞。Xenomai 3提供了一个实时的`printf()`实现,通过libcobalt库在应用编译链接时自动处理,预分配内存,使用共享内存和线程特有数据来提高效率和实时性。
14 0
linux实时应用如何printf输出不影响实时性?
|
6天前
|
存储 算法 网络协议
【探索Linux】P.26(网络编程套接字基本概念—— socket编程接口 | socket编程接口相关函数详细介绍 )
【探索Linux】P.26(网络编程套接字基本概念—— socket编程接口 | socket编程接口相关函数详细介绍 )
12 0
|
7天前
|
安全 Linux Shell
Linux常用命令详解与实战应用
【5月更文挑战第7天】本文详述了Linux常用命令,包括文件与目录操作(ls, cd, pwd, cp, mv, rm)、文本处理(cat, grep, sed)及系统管理(top, df, du)命令。通过实例演示了如何使用这些命令,帮助读者理解和掌握Linux操作,提升系统管理效率。学习和熟练运用这些基础命令,是高效使用Linux的关键。
|
7天前
|
Shell Linux 编译器
C语言,Linux,静态库编写方法,makefile与shell脚本的关系。
总结:C语言在Linux上编写静态库时,通常会使用Makefile来管理编译和链接过程,以及Shell脚本来自动化构建任务。Makefile包含了编译规则和链接信息,而Shell脚本可以调用Makefile以及其他构建工具来构建项目。这种组合可以大大简化编译和构建过程,使代码更易于维护和分发。
24 5
|
8天前
|
分布式计算 大数据 Hadoop
【经验分享】用Linux脚本管理虚拟机下的大数据服务
【经验分享】用Linux脚本管理虚拟机下的大数据服务
15 1
|
8天前
|
Shell Linux 编译器
C语言,Linux,静态库编写方法,makefile与shell脚本的关系。
总结:C语言在Linux上编写静态库时,通常会使用Makefile来管理编译和链接过程,以及Shell脚本来自动化构建任务。Makefile包含了编译规则和链接信息,而Shell脚本可以调用Makefile以及其他构建工具来构建项目。这种组合可以大大简化编译和构建过程,使代码更易于维护和分发。
15 3
|
12天前
|
Linux Shell 调度
【Linux系列】fork( )函数原理与应用详解——了解【父子进程及其特性】(代码演示,画图帮助理解,思维导图,精简)(11)
【Linux系列】fork( )函数原理与应用详解——了解【父子进程及其特性】(代码演示,画图帮助理解,思维导图,精简)(11)