for循环的基础使用

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的奇数

[[email protected] ~]# seq 1 2 10              

1

3

5

7

9

 例:打印1-10

[[email protected] ~]# 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 查看端口的有哪些状态

[[email protected] ~]# 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的值

[[email protected] ~]# 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中的相关参数是可以在脚本编辑完成后可以不执行脚本的情况下进行测试;

 

[[email protected] ~]# sh [-nvx] scripts.sh

参数:

-n : 不要执行scripts,仅查询语法问题

-v : 在执行scripts前,先将scripts的内容输出到屏幕上;

-x : 将使用到的scripts内容显示到屏幕上

例:ping192.168.1.1~192.168.100.100的网络状态

[[email protected] 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+...一直累加到用户输入的数值为止

 

[[email protected] 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

时间: 2024-10-11 12:20:05

for循环的基础使用的相关文章

DataWhale 动手学深度学习PyTorch版-task3+4+5:文本预处理;语言模型;循环神经网络基础

课程引用自伯禹平台:https://www.boyuai.com/elites/course/cZu18YmweLv10OeV <动手学深度学习>官方网址:http://zh.gluon.ai/ ——面向中文读者的能运行.可讨论的深度学习教科书. 第二次打卡: Task03: 过拟合.欠拟合及其解决方案:梯度消失.梯度爆炸:循环神经网络进阶 Task04:机器翻译及相关技术:注意力机制与Seq2seq模型:Transformer Task05:卷积神经网络基础:leNet:卷积神经网络进阶 有

FOR循环及基础应用方式(输出一组字符串)

for循环写法: for(起始状态;判断条件;状态改变){ 执行语句; } 运行方式: 1.判断条件 2.执行语句 3.状态改变 for(var i = 0; i < 3; i++) { alert(i); } i=0;     ←起始状态(起始值) 第一轮循环 i<3; alert(0); i=1; 第二轮循环 i<3; alert(1) i=2; 第三轮循环 i<3; alert(2) i=3; 第四轮循环(由于第三轮循环i=3,已经达到i<3这个条件)不成立,无法继续循

多线程同步(循环50 基础加深版)

要求:子线程循环10次后主线程循环100次之后子线程循环10次.....如此往复50次 子线程的每次执行10次不许被打断以及主线程的每次100次不许被打断 所以这两个操作可以加上同步所 1 package com.thread; 2 3 public class ThreadTest2 { 4 public static void main(String[] args) { 5 final Output output = new Output(); 6 new Thread(new Runnab

第十三讲 循环while基础

for循环:循环次数已知 while循环:循环次数未知/已知 while循环次数的控制:1,是在循环体中控制:2,是在条件中控制 语法结构: while 条件: code... code... else: code... code... 注: 1,条件和else的后面都要有冒号,循环体和else程序块都用同意缩进来控制而不用花括号 2,while的条件和if的条件表达式构造类似 3,条件满足时,while下的语句被重复执行:不满足时,跳出循环体,执行else下面的语句块 4,else语句分支可以

python基础教程(第二版)

开始学习python,根据Python基础教程,把里面相关的基础章节写成对应的.py文件 下面是github上的链接 python基础第1章基础 python基础第2章序列和元组 python基础第3章使用字符串 python基础第4章字典 python基础第5章循环 python基础第6章函数和魔法参数 python基础第7章类 python基础第8章异常 python基础第9章魔法方法.属性和迭代器 python基础第11章文件 python基础第12章GUI(wxPython) pytho

一行代码引入 ViewPager 无限循环 + 页码显示

(出处:http://www.cnblogs.com/linguanh) 前序: 网上的这类 ViewPager 很多,但是很多都不够好,体现在 bug多.对少页面不支持,例如1~2张图片.功能整合不全(无限+页码)等等,本类由我从零到无完成的,基本已找完 bug,注释丰富,方便大家理解. 特点: 1,代码量少 , 共两个类,约合 310 行代码 (除去注释) 2,可扩展 , 再加个 handler 即可实现自动轮播 3,时间复杂度低 4,耦合度低,只依赖了 imageLoader,可以自己切换

Atitit &#160;循环(loop), 递归(recursion), 遍历(traversal), 迭代(iterate).

Atitit  循环(loop), 递归(recursion), 遍历(traversal), 迭代(iterate). 1.1. 循环算是最基础的概念, 凡是重复执行一段代码, 都可以称之为循环. 大部分的递归, 遍历, 迭代, 都是循环.1 1.2. 递归的定义是, 根据一种(几种)基本情况定义的算法, 其他复杂情况都可以被逐步还原为基本情况.1 1.3. 递归的基本概念和特点1 1.4. 迭代(数学): 在循环的基础上, 每一次循环, 都比上一次更为接近结果.2 1.5. 编程语言中的循环

JVM基础01-内存分配

一.什么是JVM Java作为主流编程语言: 它摆脱了硬件的束缚,一处编写,处处运行: 它提供了一种相对安全的内存管理和访问机制,避免了大部分的内存泄露和指针越界问题: 它实现了热点代码的检测和运行时编译优化,这使得Java应用能够随着时间的推移而获取更高的性能: 结构严谨,API丰富 .... 上图就是JVM的物理结构图,什么是JVM? JVM是JAVA最核心的基础,一切的JAVA程序都依赖于JVM,而且依赖于JVM的语言并不仅仅是JAVA,还有其他的著名语言例如JRuby,Scala等等.而

JavaSE基础笔记513

JavaSE笔记整理 java概述 1. 人机交互 人机交互:是指人与计算机之间使用某种对话语言,以一定的交互方式,为完成确定任务的人与计算机之间的信息交换过程. 交互方式 图形化界面:这种方式简单直观,使用者易于接受,容易上手操作. 命令行方式:需要有一个控制台,输入特定的指令,让计算机完成一些操作.较为麻烦,需要记住一些命令. 2. 键盘功能键介绍 这些按键要求的不是认识:而是常用. ′ Tab *** 缩格 ′ 空格 Enter ****** ′ Window ′ Shift *** (C