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 ...
随机推荐
- 201521123008《Java程序设计》第五周实验总结
1.本章学习总结 2.书面作业 1.代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.java文件能否编译通过?哪句会出现错误?试改正该错误.并分析输出结果. 不能.Sy ...
- 201521123109 《java程序设计》第12周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对象(属性:int id, String name,int age,doubl ...
- 201521123027 <java程序设计>第十周学习总结
1.本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 异常: 多线程: 2.书面作业 Q1.finally 题目4-2 1.1 截图你的提交结果(出现学号) 1.2 ...
- linux目录结构图
- Spark Streaming socketTextStream简单demo
正文 SparkStreaming的入口是StreamingContext,通过scala实现 一个简单的实时获取数据.代码SparkStreaming官网也可以找到. object SocketDS ...
- ActiveMQ_Windows版本的安装部署
1, 保证电脑上安装了jdk6以上版本的java,并配置了好环境变量 : 2, 官方下载地址:http://activemq.apache.org/download-archives.html ,这里 ...
- webservice05#soap消息
1, SOAPMessage结构图 2, SOAP消息的创建 1>前面的一个简单WebService 服务 package com.yangw.soap.service; import jav ...
- apache-beanutil工具类的使用
BeanUtil工具类是apache commons中的项目 使用BeanUtil除了需要 commons-beanutils-1.8.3.jar 外,可能需要记录错误日志信息,再加入 commons ...
- C++临时对象以及针对其进行的优化
C++临时对象以及针对其进行的优化 C++中真正的临时对象是看不见的,它们不出现在你的源代码中. 那么什么时候回产生临时对象呢?主要是三个时刻: 产生临时对象的三个时刻: 用构造函数作为隐式类型转换函 ...
- angular学习笔记02 angular指令大全
第一步 先要引入angular, 第二步 在 html 标签中<html ng-app> 加入ng-app(这是个必须的,不然会报错) 接下来就可以去使用angular的各种指令了. ...