精华内容
下载资源
问答
  • shell 脚本实现变量累加

    千次阅读 2016-10-08 15:59:51
    then #判断是否是到5次了,如果到了就退出程序脚本 exit fi sleep 1m SERVER=192.168... USERNAME=user PASSWORD=pw /usr/bin/ftp -n $SERVER $USERNAME $PASSWORD cd /WoAccountRec/$date/ binary verbose prom ...
    1、语法
    ((i=i+1));
     x=$(( $x + 1 ))
     x=`expr $x + 1`
    注意: expr 运算和空格
    2、实例
    until example
     #bin/bash
     i=1
     s=0
     until [[ i -gt 30 ]];
     do
               ((s=s+i));
               ((i=i+1));
     done
    3、实现取文件5次,如果还不成功退出
    #!/bin/sh
    ./etc/profile
    . ~/.bash_profile
    date=`date -d yesterday +"%Y%m%d"`
    getcount=1
    echo "$date日期开始取文件"
    echo `date +"%Y%m%d-%H:%M:%S"`"开始获取文件"
    rm -rf ${date}_4800_WoAccountRec*.REQ
    SERVER=192.168...#请换成自己的ip地址和用户密码
    USERNAME=user
    PASSWORD=pw
    /usr/bin/ftp -n $SERVER < user $USERNAME $PASSWORD
    cd /WoAccountRec/$date/
    binary
    verbose
    prom off
    mget *
    close
    quit
    EOF
    filecount=`ls -l $date*|wc -l`
    echo "获取文件的个数是$filecount"
    while [[ "$filecount" -eq '0' ]]
    do
    echo `date +"%Y%m%d-%H:%M:%S"`"再${getcount}次开始获取文件"
    echo "没有获取到1个文件程序循环等待1分钟!"
    getcount=`expr $getcount + 1`  #累加变量
    #((getcount=getcount+1))
    if [[ $getcount -eq 5 ]]; then   #判断是否是到5次了,如果到了就退出程序脚本
    exit 
    fi
    sleep 1m
    SERVER=192.168...
    USERNAME=user
    PASSWORD=pw
    /usr/bin/ftp -n $SERVER < user $USERNAME $PASSWORD
    cd /WoAccountRec/$date/
    binary
    verbose
    prom off
    mget *
    close
    quit
    EOF
    filecount=`ls -l $date*|wc -l`
    done
    echo "你好!取文件成功了

    展开全文
  • 关于期初期末循环累加的SQL

    千次阅读 2011-04-27 14:58:00
    其实:这条语句体现了SQL中的循环思想,在外围套一个大循环 select * from jxc,在Select *就是循环遍历表中的每一条记录(select top 1 fdNumber from jxc  where [fdId]=a.[fdId] and [fdCz]='期初' order by ...

    if exists (select * from sysobjects where id = object_id(N'Jxc') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    begin
      drop table Jxc
    end

    CREATE TABLE [jxc] (
    [fdDate] [datetime] NULL ,
    [fdId] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [fdNumber] [decimal](18, 2) NULL ,
    [fdCz] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL 
    ) ON [PRIMARY]
    GO

     

    Insert Jxc (fdDate,fdId,fdNumber,fdCz) Values ( '2011-04-26 00:00:00.000','001',100.00,'期初')
    Insert Jxc (fdDate,fdId,fdNumber,fdCz) Values ( '2011-04-26 00:00:00.000','002',200.00,'期初')
    Insert Jxc (fdDate,fdId,fdNumber,fdCz) Values ( '2011-04-26 00:00:00.000','001',2000.00,'进货')
    Insert Jxc (fdDate,fdId,fdNumber,fdCz) Values ( '2011-04-26 00:00:00.000','001',-500.00,'出货')
    Insert Jxc (fdDate,fdId,fdNumber,fdCz) Values ( '2011-04-26 00:00:00.000','001',-300.00,'进货退货')
    Insert Jxc (fdDate,fdId,fdNumber,fdCz) Values ( '2011-04-26 00:00:00.000','001',200.00,'出货退货')
    Insert Jxc (fdDate,fdId,fdNumber,fdCz) Values ( '2011-04-27 00:00:00.000','001',600.00,'进货')
    Insert Jxc (fdDate,fdId,fdNumber,fdCz) Values ( '2011-04-27 00:00:00.000','003',100.00,'进货')
    select [fdDate] 日期,[fdId]  编号,
         [期初]=isnull((select sum(fdNumber) from jxc
            where [fdId]=a.[fdId] and DATEDIFF(day,[fdDate],a.[fdDate])>=1),
              isnull((select top 1 fdNumber from jxc
            where [fdId]=a.[fdId] and [fdCz]='期初' order by [fdDate]),0)),
           sum(case when [fdCz]='进货' then [fdNumber] else 0 end) [进货],
           sum(case when [fdCz]='出货' then [fdNumber] else 0 end) [出货],
           sum(case when [fdCz]='进货退货' then [fdNumber] else 0 end) [进货退货],
           sum(case when [fdCz]='出货退货' then [fdNumber] else 0 end) [出货退货],
           [期末库存]=(select SUM(fdNumber) from jxc where [fdId]=a.[fdId]
                    and [fdDate]<=a.[fdDate])
    from jxc a group by [fdDate],[fdId]

     

    摘自 http://topic.csdn.net/u/20110426/14/aaf9ab0b-46c9-499e-8984-3809da2c33a5.html?65602

    其实:这条语句体现了SQL中的循环思想,在外围套一个大循环 select * from jxc,在Select *就是循环遍历表中的每一条记录(select top 1 fdNumber from jxc
            where [fdId]=a.[fdId] and [fdCz]='期初' order by [fdDate]),0)这句话是在遍历表jxc中的每一条记录的同时,查找fdid值相同,并且是期初的值,这里体现了循环的思想

    展开全文
  • shell脚本中for循环可以自动化处理一些事物,在本博客中,作者将会结合几个示例讲解for循环的使用方法 for循环标准结构 for 语句 do 执行语句 done 示例 利用for循环实现1-15数字累加 #!/bin/bash j=0 for i in...

    for循环

    shell脚本中for循环可以自动化处理一些事物,在本博客中,作者将会结合几个示例讲解for循环的使用方法

    for循环标准结构

    for 语句
    do
    	执行语句
    done
    

    示例

    • 利用for循环实现1-15数字累加
    #!/bin/bash
    
    j=0
    for i in `seq 1 15`
    do
            j=`expr $i + $j`
    done
    echo $j
    
    

    其中代码中for i in `seq 1 15` 中需要注意添加
    ··也就是键盘上面的波浪号键。其作用为代表引号内部为shell命令。 e x p r expr expr表示两个数相加

    • 查找指定目录下所有的log文件,并压缩成文件包
    #!/bin/bash
    
    for i in `find . -maxdepth 1 -name "*.log"`
    do
            echo "i is $i"
            tar -czvf $i.tgz $i
    done
    echo "dones"
    
    

    其中for i in find . -maxdepth 1 -name "*.log"表示在当前目录下寻找所有以.log结尾的文件; tar -czvf $i.tgz $i表示对当前文件压缩,所以就实现了对当前目录下所有以log结尾文件顺序压缩,其中代码执行结果如图
    在这里插入图片描述

    展开全文
  • 循环执行脚本

    千次阅读 2019-06-18 14:56:36
    今天来分享一下最近学习脚本中的循环脚本心得和简易编程。 一.编程中的逻辑处理: 顺序执行 选择执行 循环执行 1. for循环 for 变量名 in 列表;do  循环体donefor循环的列表生成方法如下:in后列表有几个既循环...

    今天来分享一下最近学习脚本中的循环脚本心得和简易编程。

    一.编程中的逻辑处理:

    • 顺序执行
    • 选择执行
    • 循环执行

    1. for循环

    for 变量名 in 列表;do
      循环体
    done
    循环执行脚本
    for循环的列表生成方法
    循环执行脚本
    如下:
    in后列表有几个既循环赋值给i几次 循环执行几次
    循环执行脚本
    seq 正反跳步生成列表
    循环执行脚本
    双引号会把参数变为一个整体
    循环执行脚本
    "$* " 会变为一个整体参数 既abc
    "$@" 会分辨显示参数 既 a b c
    小心使用即可

    来看看具体使用情况及脚本吧

    1. 100以内的奇数累加循环执行脚本
    2. 既对2取模 余1就执行+=命令
      
      #!/bin/bash
      declare -i sum=0
      for i in {1..100};do
      if [ $[i%2] -eq 1 ];then
      let sum+=i
      fi
      done
      echo sum=$sum```
    3. 创建10个用户随机生成口令并下次登录更改密码
      循环执行脚本
      #!/bin/bash
      for i in {1..10};do
      useradd user$i
      password=`tr -dc '[:alnum:]' &lt; /dev/urandom |head -c 8`
      echo user$i:$password | tee  -a pass.txt |chpasswd
      passwd  -e  user$i 
      echo "User:user$i is created"
      done

      4.提取用户名并批量删除用户
      循环执行脚本
      5.扫描网络,找出能联通的IP 并保存在文件中
      循环执行脚本
      NETID=172.16.128

      
      #!/bin/bash
      for HOSTID in {1..254};do
      {
      if ping -c1 -W1 $NETID.$HOSTID &&gt; /dev/null ;then
      echo $NETID.$HOSTID is up | tee -a hostlist.txt
      fi
      } & 
      done
      wait```

    2.for 循环的第二种写法

    for ((控制变量初始化;条件判断表达式;控制变量的修正表达式))
    do
    循环体
    done
    循环执行脚本
    如上图,由表达式1 来和表达式二判断,如为真就执行命令 ,在再表达式3的生成下再与表达式二判断,直到与表达式二条件不满足 ,循环停止
    看看例子吧:
    循环执行脚本
    这个是九九乘法口诀的表示图 效果图如下
    循环执行脚本
    #!/bin/bash<br/>for ((i=1;i&lt;=9;i++));do<br/>for((j=1;j&lt;=i;j++));do<br/>echo -e "${j}x$i=$[j*i]\t\c"<br/>done<br/>echo <br/>done
    for 的两种方法表示99乘法表
    循环执行脚本

    3.while循环

    while CONDITION; do
      循环体
    done
    CONDITION:循环控制条件;进入循环之前,先做一次判断;每一次循环之后会再次做判断;条件为“true”,则执行一次循环;直到条件测试状态为“false”终止循环
    1.取10个随机数字 取出最大值和最小值
    循环执行脚本
    ```#!/bin/bash
    i=1
    MAX=$RANDOM
    MIN=$MAX
    echo $MAX
    while [ $i -lt 10 ];do
    N=$RANDOM
    echo $N
    if [ $N -gt $MAX ];then
    MAX=$N
    elif [ $N -lt $MIN ];then
    MIN=$N
    fi
    let i++
    done
    echo MAX=$MAX, MIN=$MIN

    
    2. 监控服务的启动状态、如果关闭则重新服务
    ![](https://s1.51cto.com/images/blog/201906/18/6257148a3ab81965bbf3f55629e25ecb.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
    每10秒监控一次,并生成日志文件
    ```SLEEPTIME=10
    while :;do
    if ! killall -0 php-fpm &&gt; /dev/null;then
    systemctl restart php-fpm &&gt; /dev/null
    echo "At `date +'%F %T'` php-fpm is restarted" &gt;&gt; /var/log/monitor.log
    fi
    sleep $SLEEPTIME
    done```

    4.循环控制语句continue

    用于循环体中
    continue [N]:提前结束第N层的本轮循环,而直接进入下一轮判断;最内层为第1层
    循环执行脚本
    continue 中断循环中某一次循环 continue2 终端上一层循环
    循环执行脚本

    5.循环控制语句break

    用于循环体中
    break [N]:提前结束第N层循环,最内层为第1层
    循环执行脚本
    同理,break2 中断第二层循环
    循环执行脚本

    6.接下来找几个有趣的例子;

    1. 数字猜猜猜
      循环执行脚本
      
      #!/bin/bash
      N=$[RANDOM%10+1]
      while read -p "input a number(1-10):" NUM ;do
      if [[ $NUM =~ ^[[:digit:]]+$ ]];then
      if [ $NUM -eq $N ];then
      echo OK
      break
      elif [ $NUM -gt $N ];then
      echo too large!
      else
      echo too small!
      fi
      else
      echo "Please input a digit"
      fi
      done```
    2. 猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,只剩下一个桃子了。求第一天共摘了多少?
      #!/bin/bash<br/>sum=1<br/>for i in {1..9};do<br/>let sum=(sum+1)*2<br/>done<br/>echo "num is : $sum "
      循环执行脚本
    3. 打印等腰三角形

    ``` #!/bin/bash
    read -p "place input isoceles triangle:" line
    for i in $(seq 1 $line);do
    spacenum=$[line-i]
    anum=$[2i-1]
    for j in $(seq 1 $spacenum);do
    echo -e " \c"
    done
    for k in $(seq 1 $anum);do
    echo -e "
    \c"
    done
    echo
    done

    
    
    4. 扫描网络中有多少主机是开启,有多少主机是关闭
    
    ``` #!/bin/sh
    read -p "please input new(eg:192.168.0.0): " net
    netid=`echo $net|cut -d. -f1-2`
    i=0
    up=0
    down=0
    while [ $i -le 254 ];do
                    j=1
                    while [ $j -le 254 ];do
                                    if ping -c1 -w1 $netid.$i.$j &>/dev/null;then
                                                    echo "the $netid.$i.$j is up"
                                                    let up++
                                    else
                                                    echo "the $netid.$i.$j is down"
                                                    let down++
                                    fi
                                    let j++
                    done
                    let i++
    done
    echo "the up is $up"
    echo "the down is $down"```
    5. 实现打印国际象棋棋盘
    
    ```#!/bin/bash
    i=1
    while [ $i -le 8 ];do
        j=1
        while [ $j -le 4 ];do
            if [ $[$i%2] -eq 0 ];then
                echo -e "\e[1;41m  \e[0m\e[1;43m  \e[0m\c"
            else
                echo -e "\e[1;43m  \e[0m\e[1;41m  \e[0m\c"
            fi
            let j++
        done
        echo
        let i++
    done```
    
    for 的循环写法
    
    ``` #!/bin/bash
    for i in {1..8};do
        for j in {1..4};do
            if [ $[i%2] -eq 0 ];then
                echo -e "\e[1;41m  \e[0m\e[1;43m  \e[0m\c"
            else
                echo -e "\e[1;43m  \e[0m\e[1;41m  \e[0m\c"                                                                                                                     
            fi
        done
        echo
    done```
    
    ## 二.函数
    
    函数由两部分组成:函数名和函数体
    help function
    语法一:
    f_name (){
    ...函数体...
    }
    语法二:
    function f_name {
    ...函数体...
    }
    语法三:
    function f_name () {
    ...函数体...
    }
    通常用第三种方法定义,比较清楚明了
    函数获取操作系统版本
    
       func_os_version(){
        sed -nr 's/.* ([0-9]+)\..*/\1/p' /etc/redhat-release
    }
    
    #### 删除shell函数
    命令格式为:
    
    unset function_name
    示例:
    unset findit
    再键入set命令,函数将不再显示
    环境函数
    使子进程也可使用
    声明:export -f function_name
    查看:export -f 或 declare -xf
    
    #### 通常在较本中常用函数会放在单独文件中
    使用时可以调用函数库
    函数文件已创建好后,要将它载入shell
    定位函数文件并载入shell的格式
    . filename 或 source filename
    注意:此即<点> <空格> <文件名>
    这里的文件名要带正确路径
    
    判断是否是数字的shell函数
    
    ```func_is_digit(){
        if [ ! "$1" ];then
            echo "Usage:func_is_digit number"
            return  10 
        elif [[ $1 =~ ^[[:digit:]]+$ ]];then
            return 0
        else
            echo "Not a digit"
            return 1
        fi
    }```
    
    ## 今天就分享到这里了 谢谢咯

    转载于:https://blog.51cto.com/14322554/2410511

    展开全文
  • LinuxShell脚本——循环结构 摘要:本文主要学习了Shell脚本中的循环结构。 while循环 基本语法 while循环是最简单的一种循环,如果条件满足则执行循环里的语句,如果条件不满足则退出循环: 1 while 条件 2...
  • Shell脚本二重循环打印一 打印正方形的流程1.2 修改为不换行输出 (变成一行5个*)1.3 增加外层循环条件(变成一行15个*)1.4 增加换行(改变成5行*)1.5 打印正方形 (在内循环中加入间隔空行)二 打印矩形2.1 第一...
  • #(这种后台执行的循环是错误的) done 2.for i in $(seq 1 10) seq num1 num2:从num1累加到num2,每次累加1; 必须带有取值$符号:说明是值 输出:9行888 3.for i in {1..10} {num1..num2}:从num1...
  • 1到100累加计算python脚本

    千次阅读 2018-06-06 14:27:23
    1到100累加计算python脚本: vi a1.py #!/usr/bin/python def sum():sum = 0for i in range(1,101):sum = sum + ireturn sumprint sum():wq python a1.py 转载于:https://blog.51cto.com/yangzhiming/2125511...
  • shell脚本中的数值累加问题

    千次阅读 2017-04-13 09:58:00
    2019独角兽企业重金招聘Python工程师标准>>> ...使用sh -x test.sh 可以很方便的对shell脚本进行调试,查看每一步产生的结果。 转载于:https://my.oschina.net/aibati2008/blog/878050
  • --小曲配蟒蛇循环循环结构,包含条件语句判断和循环体。没有条件语句很可能就:死-循-环了!for循环用得更多。循环结构while循环while 条件语句: 循环体干中学:1-100相加num = 0while num <= 100: #条件语句 ...
  • 文章目录while 循环100内加减国际象棋,棋盘国际象棋,棋盘-2国际象棋,棋-3监控httpd服务 while 循环 while CONDITION;...#100内累加 sum=0 i=1 while [ $i -le 100 ] ; do let sum+=i let i++ done ec...
  • Shell脚本中的循环

    2020-04-08 16:11:06
    循环语句: Bash Shell中主要提供了三种循环方式:for、while和until。 一、for循环 for循环的运作方式,是讲串行的元素意义取出,依序放入指定的变量中,然后重复执行含括的命令区域(在do和done 之间),直到...
  • 均使用for循环进行简单的累加测试。个人技能有限所以只做了简单测试做参考。 实验环境使用linux 64位服务器,操作系统为contos 5.4,php版本5.1.6,python版本为2.6.6,node.js版本为0.4.12,java版本为1.6.0_03...
  • 本文主要介绍在linux环境下,定时循环执行python脚本的两种方法。方法一: nohupvim time.py1 import time2 while(True):3 #time.sleep(1)4 with open('time.log', 'a+') as logfile:5 logfile.write('Hello, World!...
  • Shell里的循环语句一、for 循环1.for 循环语句2....举例2.1 用户输入密码,脚本判断密码是否正确,输入正确提示正确信息,连续输错3次则报警2.2编写能够自动生成一个8位随机密码的脚本三、until 循环1. unti
  • 很好的一篇讲shell脚本循环语句的文章,图文并茂,通俗易懂,必须转载~ 原文链接:http://kling.blog.51cto.com/3320545/1252952 循环语句: Bash Shell中主要提供了三种循环方式:for、while和until。 ...
  • 文章目录循环for语句结构(常用)while语句结构(常用)until语句结构for循环及while循环的应用 循环         在实际工作中,当某一些操作需要重复的执行,而每次执行时...
  • for 循环 for 变量名 in 列表 ;do 循环体 done 循环 [root@localhost data]# for id in a b c d ; do echo id is $id ; done id is a id is b id is c id is d [root@localhost data]# for id in {a..d} ; do ...
  • 循环语句: Bash Shell中主要提供了三种循环方式:for、while和until。 一、for循环  for循环的运作方式,是讲串行的元素意义取出,依序放入指定的变量中,然后重复执行含括的命令区域(在do和done 之间)...
  • 目录一、for循环语句二、while循环语句三、until循环语句四、结束循环----break和continue五、转义字符(补充) 一、for循环语句 for i in {1…10} {1…10…2} $(seq 1 10) $(seq 1 2 10) for ((i=1; i<=10; i...
  • 案例1:使用for循环结构 ...本案例要求编写一个Shell脚本chkhosts.sh,利用for循环来检测多个主机的存活状态,相关要求及说明如下: 对192.168.4.0/24网段执行ping检测 ping检测可参考前一天的pinghos...
  • Linux 定时循环执行 python 脚本

    千次阅读 2018-09-03 15:11:15
    本文主要介绍在linux环境下,定时循环执行python脚本的两种方法。   方法一: nohup vim time.py import time while(True): #time.sleep(1) with open('time.log', 'a+') as logfile: logfile.write('Hello...
  • while循环 只要条件判断式成立,循环就会一直继续,直到条件判断式不成立,循环才会停止。 语法格式: while [ 条件判断式 ] do 程序 done until循环 until循环和while循环相反,只要条件判断式不成立,则一直循环...
  • while do done, until do done ( 不定循环) 一般来说,不定循环最常见的就是底下这两种状态了: while [ condition ] &amp;lt;==中括号内的状态就是判断式 do &amp;lt;==do 是循环的开始! 程序段落 done &...
  • shell脚本的3种循环以及相关内容

    千次阅读 2020-12-22 00:13:42
    shell脚本的3种循环以及相关内容一、for语句1.1 for语句的结构1.2 for语句的实例二、while循环2.1 while语句的结构2.2 while语句应用示例三、until语句3.1 until语句的结构3.2 until语句应用示例四、常用转义字符五...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,664
精华内容 3,465
关键字:

脚本循环累加