for循环:
for 变量名 in 列表;do
循环体
done
执行机制:
依次将列表中的元素赋值给“变量名”;每次赋值后即执行一次循环体;直到列表中的元素耗尽循环结束
添加10个用户,user1 user2 user3 user4 ...密码同用户名
#!/bin/bash
if [ ! $UID -eq 0 ];then
echo "only root"
exit1
fi
for i in {1..10};do
if id user$i &> /dev/null;
else
useradd user$i
if [ $? -eq 0 ];then
echo "user$i"|passwd --stdin user$i &> /dev/null
echo "Add user$i finished."
fi
fi
done
这里需要使用到seq命令:
例:打印1-10的奇数
[root@station40 ~]# seq 1 2 10
1
3
5
7
9
例:打印1-10
[root@station40 ~]# seq 1 10
1
2
3
4
5
6
7
8
9
10
列表生成方法
(1)直接给出列表
(2)整数列表
(a){start..end}
(b)$(seq [start [step]] end)
(3)返回列表的命令;
$(COMMAND)
例:判断var目录下哪些是文件哪些是目录哪些是链接文件
#!/bin/bash
#
for file in $(ls /var); do
if [ -f /var/$file ]; then 给出绝对路径
echo "command file"
elif [ -L /var/$file ];then
echo "symbolic file"
echo [ -d /var/$file ];then
echo "directory"
else
echo "other type"
fi
done
现在我们打开netstat -tan 查看端口的有哪些状态
[root@station40 ~]# netstat -tan
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 52 172.16.251.40:22 172.16.252.158:2297 ESTABLISHED
tcp 0 0 :::22 :::* LISTEN
tcp 0 0 ::1:25 :::* LISTEN
现在需要统计这几种状态各有出现的次数
例:
#!/bin/bash
#
declare -i estab=0
declare -i estab=0
declare -i estab=0
for state in $( netstat -tan | grep "^tcp\>" | awk '{print $NF}');do
if [ "$state" == 'ESTABLISHED' ]; then
let estab++
elif [ "$state" == 'LISTEN' ];then
let listen++
else
let other++
fi
done
echo "ESTABLISHED:$estab"
echo "LISTEN:$listen"
echo "Unkown:$other"
for ..do ..done 数值处理
for ((初始值;限制值;执行步长))
初始值:某个变量在循环当中的初始值,直接以类似i=1设置好;
限制值:当变量的值在这和限制的范围内,就连续进行循环,例如i<=1;
执行步长:每做一次循环时变量的变化量。例如i=i+1
计算1+2+3+4...+n的值
[root@localhost ~]# vim nn
#!/bin/bash
read -p "please input anumber: " nu
s=0
for (( i=1; i<=$nu; i=i+1 ))
do
s=$(($s+$i))
done
echo $s
在编辑脚本的过程中最怕的就是出现语法错误,同时bash中的相关参数是可以在脚本编辑完成后可以不执行脚本的情况下进行测试;
[root@localhost ~]# sh [-nvx] scripts.sh
参数:
-n : 不要执行scripts,仅查询语法问题
-v : 在执行scripts前,先将scripts的内容输出到屏幕上;
-x : 将使用到的scripts内容显示到屏幕上
例:ping192.168.1.1~192.168.100.100的网络状态
[root@localhost Script]# cat for1.sh
#!bin/bash
network="172.16"
for sitenu in $(seq 1 100)
do
ping -c 1 -w ${network}.${sitenu}.${sitenu} &> /dev/null && result=0 || result=1
if [ "$result" == 0 ];then
echo "server ${network}.${sitenu}.${sitenu} is up"
else
echo "server ${network}.${sitenu}.${sitenu} is down"
fi
done
例:
1.请新建一个script,当执行script的时候,该script可以显示你目前的身份(shoami)和你目前所在的目录(用pwd)
#!bin/bash
k=$(pwd)
w=$(whoami)
echo "the system root is:$k"
echo "the system directories is $w"
例:让用户输入一个数字,程序可以由1+2+3+...一直累加到用户输入的数值为止
[root@localhost Script]# cat for3.sh
#!bin/bash
s=0
i=0
read -p "please input numble: " n
while [ "$i" != "$n" ]
do
i=$((i+1))
s=$(($s+$i))
done
echo "$s"
#!bin/bash
s=0
read -p "please input a numble: " n
for (( i=1; i<=$n; i=i+1 ))
do
s=$(($i+$s))
done
echo $s
例.编写一个脚本,它的作用是先查看一下/root/test/logical 这个名称是否存在,若不存在,则创建一个文件,
使用touch来创建,创建完成后离开;如果存在的话,判断该名称是否为文件,若为文件则将之删除后新建一个
目录,文件名为logical,之后离开;如果存在的话,而且该名称目录,则删除此目录!
#bin/bash
file="/root/test/ll"
file1="/root/test"
rm="rm -rf /root/test/ll"
if [ ! -d "$file1" ];then
mkdir $file1
fi
if [ ! -f "$file" ];then
touch $file
else
$rm
fi
- while循环语句基础
while循环语句基础 一while循环语句介绍 循环语句命令常用于重复执行一条指令或一组指令,直到条件不再满足时停止, Shell脚本语言的循环语句常见的有while, until, for及s ...
- for、while循环(java基础知识四)
1.循环结构概述和for语句的格式及其使用 * 什么是循环结构 循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把 ...
- [ DLPytorch ] 文本预处理&语言模型&循环神经网络基础
文本预处理 实现步骤(处理语言模型数据集距离) 文本预处理的实现步骤 读入文本:读入zip / txt 等数据集 with zipfile.ZipFile('./jaychou_lyrics.txt. ...
- PHP循环语句基础介绍
PHP 中的循环语句用于执行相同的代码块指定的次数. 循环 在您编写代码时,您经常需要让相同的代码块运行很多次.您可以在代码中使用循环语句来完成这个任务. 在 PHP 中,我们可以使用下列循环语句: ...
- 4.关于while循环的基础小练习
1)使用while.if循环输入123456 8910 count = 0 while count < 10: count += 1 if count == 7: print('') else: ...
- python for循环 - python基础入门(11)
在python开发中,除了前篇文章介绍的while循环还有一个for循环也经常使用,两者使用都是大同小异,for循环的使用相对于while循环更加灵活,下面我们一起来了解下具体区别. 一.for 循环 ...
- python while循环 - python基础入门(9)
经过昨天的学习,相信大家已经对 python的条件判断表达式if/else 有一定的了解了,那么我们今天配合昨天的课程讲解一个新概念 – while循环 . 都说程序源于生活,假如有这样一个场景:老师 ...
- JAVA基础——最简单的多重循环程序
Java 循环语句之多重循环 循环体中包含循环语句的结构称为多重循环.三种循环语句可以自身嵌套,也可以相互嵌套,最常见的就是二重循环.在二重循环中,外层循环每执行一次,内层循环要执行一圈. 如下所示: ...
- 一个基础的for循环面试题
下面的这段程序主要考察的就是for循环的基础,输出什么?????? [html] view plaincopyprint? public class test { /** * @param args ...
随机推荐
- 201521123093 java 第四周学习总结
1.平面作业 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 答:1.类与方法的注释 2.super关键字代表的是父类,super.方法表示调用的是父类 2. ...
- 201521123095《java程序设计》第4周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结上课内容. 对于一个系统中,对于名词大多为类或属性,对于动词大多为方法. 1.3 注释的应用 使用类的注释与 ...
- 201521123097《Java程序设计》第四周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 在本周的学习中,我知道了在类的定义里,还学习到了抽象类以及抽象方法的使用格式. 2. 书面作 ...
- 20152112308 《Java程序设计》第3周学习总结
本周学习总结 书面作业 1.代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; public ...
- 201521123036 《Java程序设计》第2周学习总结
本周学习总结 java数据类型: 基本类型:整数,浮点,boolean类 引用类型:数组,类,接口,null类型 String类:String类的对象不可变,字符串API,大量修改字符串使用Strin ...
- linux文件截取前几行,后几行,中间几行命令
1. 如果你只想看文件的前5行,可以使用head命令,如: head -5 /etc/passwd 2. 如果你想查看文件的后10行,可以使用tail命令,如: tail -2 /etc/passwd ...
- Java main方法继承
java中main方法是可以继承的 Test1.java package Variables; public class Test1 { public static void main(String[ ...
- Three.js与webVR
WebVR如此近 - three.js的WebVR示例程序解析 关于WebVR 最近VR的发展十分吸引人们的眼球,很多同学应该也心痒痒的想体验VR设备,然而现在的专业硬件价格还比较高,入手一个估计就要 ...
- 为什么你需要将代码迁移到ASP.NET Core 2.0?
随着 .NET Core 2.0 的发布,.NET 开源跨平台迎来了新的时代.开发者们可以选择使用命令行.个人喜好的文本编辑器.Visual Studio 2017 15.3 和 Visual Stu ...
- TCP/IP(五)传输层(TCP的三次握手和四次挥手)
前言 这一篇我将介绍的是大家面试经常被会问到的,三次握手四次挥手的过程.以前我听到这个是什么意思呀?听的我一脸蒙逼,但是学习之后就原来就那么回事! 一.运输层概述 1.1.运输层简介 这一层的功能也挺 ...