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 ...
随机推荐
- javascript面向对象编程笔记
对象:一切事物皆是对象.对象是一个整体,对外提供一些操作.比如说一个收音机是一个对象,我们不需要知道它的内部结构是什么,只需要会使用外部的按钮就可以使用收音机. 面向对象:面向对象语言的标志是他们都有 ...
- Mybatis第二篇【CRUD、分页】
完成CRUD操作 我们在上一篇中已经简单知道了Mybatis是怎么使用的以及工作流程了,这次我们使用Mybatis来完成CRUD的操作,再次巩固Mybatis的开发步骤以及一些细节 包与类之间的结构 ...
- docker应用笔记
first install it: 首先安装: apt install docker.io 基本概念: 镜像:相当于虚拟机里的磁盘文件,里面有一套配置好的系统,应用程序 容器:相当于一个虚拟机实例,一 ...
- mysql 存储引擎介绍1
1.1 存储引擎的使用 数据库中的各表均被(在创建表时)指定的存储引擎来处理. 服务器可用的引擎依赖于以下因素: MySQL的版本 服务器在开发时如何被配置 启动选项 为了解当前服务器中有哪些存储引 ...
- HTTP协议报文、工作原理
一.web及网络基础 1.HTTP的历史 1.1.HTTP的概念: HTTP(Hyper Text Transfer Protocol ...
- python 脚本开发实战-当当亚马逊图书采集器转淘宝数据包
开发环境python2.7.9 os:win-xp exe打包工具pyinstaller 界面tkinter ============================================= ...
- 01.python基础知识_01
一.编译型语言和解释型语言的区别是什么? 1.编译型语言将源程序全部编译成机器码,并把结果保存为二进制文件.运行时,直接使用编译好的文件即可 2.解释型语言只在执行程序时,才一条一条的解释成机器语言给 ...
- Integer的自动拆箱
public class Test2{ public static void main(String[] args){ Integer a=1; Integer b=2; Integer c=3; I ...
- handlebar JS模板使用笔记
直接上代码: (定义模板) (编译注入) ***知识点*** //数据必须为Json数据(强调:jsonp数据不行,和json是两种数据,jsonp多了callback回调函数来包裹json数据) 遍 ...
- H264 NAL解析
NAL全称Network Abstract Layer,即网络抽象层.在H.264/AVC视频编码标准中,整个系统框架被分为了两个层面:视频编码层面(VCL)和网络抽象层面(NAL).其中,前者负责有 ...