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 ...
随机推荐
- 201521123072《java程序设计》第十二周学习总结
201521123072<java程序设计>第十二周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对象 ...
- hadoop-2.6.0源码编译
运行hadoop环境时,常常会出现这种提示 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your plat ...
- 06jQuery-01-基本选择器
1.jQuery概要 JavaScript的一个库,只是一个jquery-xxx.js的文件,它可以让你写更少的代码,做更多的事. $是著名的jQuery符号.实际上,jQuery把所有功能全部封装在 ...
- 理解 IntelliJ IDEA 的项目配置和Web部署
1.项目配置的理解 IDEA 中最重要的各种设置项,就是这个 Project Structre 了,关乎你的项目运行,缺胳膊少腿都不行.最近公司正好也是用之前自己比较熟悉的IDEA而不是Eclipse ...
- Spring - bean的lazy-init属性(懒加载)
默认情况下,容器初始化的时候便会把bean实例化,通常这样做可以让一些配置或者bean实例化的异常在容器启动的时候就发现,而不是在N久之后.但有时候,我们希望某个可能不会用到但又不是100%不用的be ...
- 小甲鱼:Python学习笔记002_数组_元组_字符串
创建普通数组 >>> member=["山东黄金","九阳股份"] >>> member ['山东黄金', '九阳股份'] ...
- mybatis-generato的功能扩展
项目代码地址:https://github.com/whaiming/java-generator 我在原有的基础上扩展了和修改了一些功能: 1.增加获取sqlServer数据库字段注释功能 2.Ma ...
- C++初学 virtual 相关
声明: 1.为了节省篇幅,头文件和域什么的都没写.另外可能是java转C++,有些叫法可能会不对 2.因初学,都是自己摸索的,有错望指出,勿喷 假设父类声明 Parent.h中如下 class Par ...
- javascript的数值转换 number()详解
---恢复内容开始--- number() parseInt() parseFloat()这三个函都可以把数非数值转换为数值,我们看看他们的区别在哪里 一 Number() 转型函数Number()是 ...
- C# 中函数内定义函数的委托方法
//定义委托方法Action(无返回值)Func(有返回值) //无返回值委托 Action<string> SetKeyAndValue = delegate(string key) { ...