精华内容
下载资源
问答
  • Linux Shell for循环写法总结发布时间:2011-08-31 11:09:40来源:红联作者:gogo11关于shell中的for循环用法很多,一直想总结一下,今天网上看到上一篇关于for循环用法的总结,感觉很全面,所以就转过来研究研究,嘿嘿...

    Linux Shell for循环写法总结

    发布时间:2011-08-31 11:09:40来源:红联作者:gogo11

    关于shell中的for循环用法很多,一直想总结一下,今天网上看到上一篇关于for循环用法的总结,感觉很全面,所以就转过来研究研究,嘿嘿...

    1、 for((i=1;i<=10;i++));do echo $(expr $i \* 4);done

    2、在shell中常用的是 for i in $(seq 10)

    3、for i in `ls`

    4、for i in ${arr[@]}

    5、for i in $* ; do

    6、for File in /proc/sys/net/ipv4/conf/*/accept_redirects; do

    7、for i in f1 f2 f3 ;do

    8、for i in *.txt

    9、for i in $(ls *.txt)

    for in语句与` `和$( )合用,利用` `或$( )的将多行合为一行的缺陷,实际是合为一个字符串数组

    ============ -_- ==============for num in $(seq 1 100)

    10、LIST="rootfs usr data data2"

    for d in $LIST; do

    用for in语句自动对字符串按空格遍历的特性,对多个目录遍历

    11、for i in {1..10}

    12、for i in stringchar {1..10}

    13、awk 'BEGIN{for(i=1; i<=10; i++) print i}'

    注意:AWK中的for循环写法和C语言一样的

    ===============================================================

    01.#/bin/bash

    02.# author: 周海汉

    03.# date :2010.3.25

    04.# blog.csdn.net/ablo_zhou

    05.arr=("a" "b" "c")

    06.echo "arr is (${arr[@]})"

    07.echo "item in array:"

    08.for i in ${arr[@]}

    09.do

    10. echo "$i"

    11.done

    12.echo "参数,\$*表示脚本输入的所有参数:"

    13.for i in $* ; do

    14.echo $i

    15.done

    16.echo

    17.echo '处理文件 /proc/sys/net/ipv4/conf/*/accept_redirects:'

    18.for File in /proc/sys/net/ipv4/conf/*/accept_redirects; do

    19.echo $File

    20.done

    21.echo "直接指定循环内容"

    22.for i in f1 f2 f3 ;do

    23.echo $i

    24.done

    25.echo

    26.echo "C 语法for 循环:"

    27.for (( i=0; i<10; i++)); do

    28.echo $i

    29.done

    ---------------------------------------------------------------------------------------------------------

    shell中for循环用法

    shell语法好麻烦的,一个循环都弄了一会 ,找了几个不同的方法来实现输出1-100间可以被3整除的数

    1.用(())

    #!/bin/bash

    clear

    for((i=1;i<100;i++))

    for

    do

    if((i%3==0))

    then

    echo $i

    continue

    fi

    done

    2.使用`seq 100`

    #!/bin/bash

    clear

    for i in `seq 100`

    do

    if((i%3==0))

    then

    echo $i

    continue

    fi

    done

    3.使用while

    #!/bin/bash

    clear

    i=1

    while(($i<100))

    do

    if(($i%3==0))

    then

    echo $i

    fi

    i=$(($i+1))

    done

    --------------------------------------------------------------------------------------------------------

    在shell用for循环做数字递增的时候发现问题,特列出shell下for循环的几种方法:

    1.

    for i in `seq 1 1000000`;do

    echo $i

    done

    用seq 1 10000000做递增,之前用这种方法的时候没遇到问题,因为之前的i根本就没用到百万(1000000),因为项目需要我这个数字远大于百万,发现用seq 数值到 1000000时转换为1e+06,根本无法作为数字进行其他运算,或者将$i有效、正确的取用,遂求其他方法解决,如下

    2.

    for((i=1;i<10000000;i++));do

    echo $i

    done

    3.

    i=1

    while(($i<10000000));do

    echo $i

    i=`expr $i + 1`

    done

    因为本方法调用expr故运行速度会比第1,第2种慢不少不过可稍作改进,将i=`expr $i + 1`改为i=$(($i+1))即可稍作速度的提升,不过具体得看相应shell环境是否支持

    4.

    for i in {1..10000000;do

    echo $i

    done

    其实选用哪种方法具体还是得由相应的shell环境的支持,达到预期的效果,再考虑速度方面的问题。

    展开全文
  • Linux Shell for循环写法总结发布时间:2011-08-31 11:09:40来源:红联作者:gogo11关于shell中的for循环用法很多,一直想总结一下,今天网上看到上一篇关于for循环用法的总结,感觉很全面,所以就转过来研究研究,嘿嘿...

    Linux Shell for循环写法总结

    发布时间:2011-08-31 11:09:40来源:红联作者:gogo11

    关于shell中的for循环用法很多,一直想总结一下,今天网上看到上一篇关于for循环用法的总结,感觉很全面,所以就转过来研究研究,嘿嘿...

    1、 for((i=1;i<=10;i++));do echo $(expr $i \* 4);done

    2、在shell中常用的是 for i in $(seq 10)

    3、for i in `ls`

    4、for i in ${arr[@]}

    5、for i in $* ; do

    6、for File in /proc/sys/net/ipv4/conf/*/accept_redirects; do

    7、for i in f1 f2 f3 ;do

    8、for i in *.txt

    9、for i in $(ls *.txt)

    for in语句与` `和$( )合用,利用` `或$( )的将多行合为一行的缺陷,实际是合为一个字符串数组

    ============ -_- ==============for num in $(seq 1 100)

    10、LIST="rootfs usr data data2"

    for d in $LIST; do

    用for in语句自动对字符串按空格遍历的特性,对多个目录遍历

    11、for i in {1..10}

    12、for i in stringchar {1..10}

    13、awk 'BEGIN{for(i=1; i<=10; i++) print i}'

    注意:AWK中的for循环写法和C语言一样的

    ===============================================================

    01.#/bin/bash

    02.# author: 周海汉

    03.# date :2010.3.25

    04.# blog.csdn.net/ablo_zhou

    05.arr=("a" "b" "c")

    06.echo "arr is (${arr[@]})"

    07.echo "item in array:"

    08.for i in ${arr[@]}

    09.do

    10. echo "$i"

    11.done

    12.echo "参数,\$*表示脚本输入的所有参数:"

    13.for i in $* ; do

    14.echo $i

    15.done

    16.echo

    17.echo '处理文件 /proc/sys/net/ipv4/conf/*/accept_redirects:'

    18.for File in /proc/sys/net/ipv4/conf/*/accept_redirects; do

    19.echo $File

    20.done

    21.echo "直接指定循环内容"

    22.for i in f1 f2 f3 ;do

    23.echo $i

    24.done

    25.echo

    26.echo "C 语法for 循环:"

    27.for (( i=0; i<10; i++)); do

    28.echo $i

    29.done

    ---------------------------------------------------------------------------------------------------------

    shell中for循环用法

    shell语法好麻烦的,一个循环都弄了一会 ,找了几个不同的方法来实现输出1-100间可以被3整除的数

    1.用(())

    #!/bin/bash

    clear

    for((i=1;i<100;i++))

    for

    do

    if((i%3==0))

    then

    echo $i

    continue

    fi

    done

    2.使用`seq 100`

    #!/bin/bash

    clear

    for i in `seq 100`

    do

    if((i%3==0))

    then

    echo $i

    continue

    fi

    done

    3.使用while

    #!/bin/bash

    clear

    i=1

    while(($i<100))

    do

    if(($i%3==0))

    then

    echo $i

    fi

    i=$(($i+1))

    done

    --------------------------------------------------------------------------------------------------------

    在shell用for循环做数字递增的时候发现问题,特列出shell下for循环的几种方法:

    1.

    for i in `seq 1 1000000`;do

    echo $i

    done

    用seq 1 10000000做递增,之前用这种方法的时候没遇到问题,因为之前的i根本就没用到百万(1000000),因为项目需要我这个数字远大于百万,发现用seq 数值到 1000000时转换为1e+06,根本无法作为数字进行其他运算,或者将$i有效、正确的取用,遂求其他方法解决,如下

    2.

    for((i=1;i<10000000;i++));do

    echo $i

    done

    3.

    i=1

    while(($i<10000000));do

    echo $i

    i=`expr $i + 1`

    done

    因为本方法调用expr故运行速度会比第1,第2种慢不少不过可稍作改进,将i=`expr $i + 1`改为i=$(($i+1))即可稍作速度的提升,不过具体得看相应shell环境是否支持

    4.

    for i in {1..10000000;do

    echo $i

    done

    其实选用哪种方法具体还是得由相应的shell环境的支持,达到预期的效果,再考虑速度方面的问题。

    展开全文
  • Shell 循环中实现展示进度百分比的脚本方法当我需要处理一个几万行的文件的时候,需要处理的时间是比较长的。我一开始的想法是,没处理一行,就输出一个 # 号。但是这样还是会出现很多很多的 # 号,即便是放在一行,...

    Shell 循环中实现展示进度百分比的脚本方法

    当我需要处理一个几万行的文件的时候,需要处理的时间是比较长的。我一开始的想法是,没处理一行,就输出一个 # 号。但是这样还是会出现很多很多的 # 号,即便是放在一行,也是非常不优雅的。所以,我想实现一个展示进度百分比的脚本。

    实现思路

    获取文件的行数

    用 i++ 实现每行处理的计数

    当前处理行数*100再除以文件行数+%得到我要输出的百分比结果

    我需要在一行展示,而不是一直追加或者每次都显示一行

    就是这些需求了。我们来逐渐实现。

    获取文件的行数

    这个比较简单,用 wc -l $file 就能获取到了。但是得到的结果我不是很满意:

    999 3.log

    在结果的前面有几个空格,我得把空格去掉,于是代码就改成了

    wc -l $file | sed 's/^[ \t]*//g'

    这样就去掉了开头的空格,然后用空格分割,取第一个就可以了,cut来实现

    wc -l $file | sed 's/^[ \t]*//g' | cut -d ' ' -f1

    OK,通过几个命令的组合,很容易的实现了获取行数的数字。

    echo 实现单行显示

    echo -en '\b\b\b\b'

    如上,就是将光标提前四个位置,并录入内容。\b是提前一个,输入几个就几个,如果已经到了开头了,就不能往前挪了,所以,多输入几个是没问题的。

    最终实现代码如下:

    # 定义变量 i

    i=1

    # 获取 3.log 这个文件的行数,并把运行结果赋予变量 l

    l=$(wc -l 3.log | sed 's/^[ \t]*//g' | cut -d ' ' -f1)

    # 每行遍历循环

    while read line; do

    # 输出百分比

    echo -en "\b\b\b\b"`echo $i*100/$l | bc `'%'

    # 计算 i++

    ((i++))

    # 传入 3.log 这个要处理的文件

    done < 3.log

    # 完成时打个OK,因为字符长度不足以遮盖原先的百分比,所以后面加了几个空格

    echo -e '\b\b\b\bOK '

    实现效果如下

    9d559821296bc86eb030eba00f89fade.gif

    好,通过简单的几行代码,就实现了我想要的效果了。

    以上脚本均在 mac 下测试通过,在 Linux 下可能会有稍许不同。

    如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

    展开全文
  • 写一个脚本,要求输入a|A显示出红色的本机IP ... 输入 c|C显示出黄色的系统运行时间 输入 q|Q显示出蓝色的直接退出 脚本如下: #!/bin/bash while true do echo -e " \033[31m A 显示主机ip...
    写一个脚本,要求输入a|A显示出红色的本机IP
                 输入 b|B显示出绿色的本机磁盘的剩余内存
                 输入 c|C显示出黄色的系统运行时间
                 输入 q|Q显示出蓝色的直接退出
    脚本如下:           
    #!/bin/bash
    while true
    do
        echo -e "
        \033[31m A 显示主机ip \033[0m
        \033[32m B 显示磁盘剩余空间 \033[0m
        \033[33m C 显示系统运行时间 \033[0m
        \033[34m Q 退出系统 \033[0m
                "
    read -p "请输入你的选择:" char
    
    case $char in
    
    a|A)
        echo -e "\033[31m `ifconfig eth0 | grep "netmask" | awk '{print $2}'` \033[0m"
        ;;
    b|B)
        echo -e "\033[32m `df -h | awk 'NR==2{print "剩余空间大小为
    :"$4}'` \033[0m"
        ;;
    c|C)
        echo -e "\033[33m `uptime | awk '{print "系统已经运行了"$3""$4""}'` \033[0m"
        ;;
    q|Q)
        exit 0
        ;;
    esac
    done

     

     

    •     脚本详情
          注意:\033[31m A \033[0m 输出A则为红色(32m—绿色,33m—黄色,34m—蓝色)
          运行结果

    •  

    展开全文
  • 有很多主机,hostname是lc1~lc19,想在某台机器上执行一个shell,让这些主机都用ntpdate去lc12上同步时间。请问这个脚本应该怎么写循环? 请大神帮忙写下,参考一下。 host文件中已经对主机名做了关联
  • Linux shell编程指南

    2015-05-29 22:40:12
    2.1.6 按照更改时间查找文件 17 2.1.7 查找比某个文件新或旧的文件 17 2.1.8 使用type选项 17 2.1.9 使用size选项 18 2.1.10 使用depth选项 18 2.1.11 使用mount选项 18 2.1.12 使用cpio选项 18 2.1.13 使用exec或ok...
  • Linux shell编程入门

    2011-10-26 22:47:42
    一个shell 脚本可以包含一个或多个shell命令,可用来自动完成通常在命令行上执行的重复循环或者复杂的工作,节省大量时间,且功能强大
  • 点击上方“Python全家桶”,“星标”或"置顶"关键时刻,第一时间送达来源|良许Linux作者| 良许本文已获原作者授权,欢迎分享转发不管是哪一门计算机语言,循环都是不可绕开的一个话题,Shell 当然也不是例外。...
  • Linux Shell高级技巧实战总结 一、将输入信息转换为大写字符后再进行条件判断 二、为调试信息设置输出级别 三、判断参数是否为数字 四、判断整数变量的奇偶性 五、将Shell命令赋值给指定变量,以保证脚本的移植性 六...
  • linux shell 编程教程

    2009-07-28 15:27:57
    linux shell编程 教程大全 目 录 译者序 前言 第一部分 shell 第1章 文件安全与权限 1 1.1 文件 1 1.2 文件类型 2 1.3 权限 2 1.4 改变权限位 4 1.4.1 符号模式 4 1.4.2 chmod命令举例 5 1.4.3 绝对模式 5 1.4.4 ...
  • linux shell 日期和中文拼接 目录 这是我第一次这个算是好的开始,加油,如有不足请多多指教! 需求 日志文件每天生成,并且比较大,要删除昨天的日志。 日志文件名中有时间后缀; 删除昨天的; 不想要每天操作; ...
  • Linux Shell自动交互的三种方法你了解Linux系统么?你是Linux系统的应用者...一、背景shell脚本在处理自动循环或大的任务方面可节省大量的时间,通过创建一个处理任务的命令清单,使用变量、条件、算术和循环等方法...
  • 写在前面随机数在日常生活中,用到的地方比较多,今天我们学习一个利用Linux shell如何产生更多的随机数。使用系统的RanDom变量但是$RANDOM是有范围的[0,32767]利用for循环验证一下结果如下:如果要生成超过32767的...
  • 笔者就曾因为空格缺少或位置不对,而浪费好多宝贵的时间。if ....; then....elif ....; then....else....fi[ -f "somefile" ] :判断是否是一个文件[ -x "/bin/ls" ] :判断/bin/ls是否存在并有...
  • 作者:邓聪聪 ...笔者就曾因为空格缺少或位置不对,而浪费好多宝贵的时间。if ....; then....elif ....; then....else....fi[ -f "somefile" ] :判断是否是一个文件[ -x "/bin/ls" ] :判断/bin/ls是否存在...
  • 一般我们在linux上十一shell命令的批量执行操作,一般使用for或者while 循环进行操作,但是这样有一个问题,for或者while本质上是串行的,并不能,如果某一个命令执行耗费的时间比较长,就会等待很长的时间,很浪费...
  • 你了解Linux系统么?...shell脚本在处理自动循环或大的任务方面可节省大量的时间,通过创建一个处理任务的命令清单,使用变量、条件、算术和循环等方法快速创建脚本以完成相应工作,这比在命令行下一个个敲入命
  • linux shell 日期转换

    2014-02-12 15:45:35
    场景:工作中经常会碰到数据重刷,定时调度等等,这就需要设置日期,需要日期加减,循环调度or特定时间调度。 常见的如:当前日期加减1天,1月等等 1.根据系统时间相加减 获取系统当前日期:`date +%Y%m%d`  ...
  • 今天介绍一下在Linux下批量执行代码的方法。复杂的可以用snakemake编写定义规则,简单的用shell直接写就可以。示例代码想要实现的目标:1, 有0-9, 10个文件夹2, 依次进入文件夹, 执行run.sh脚本, 因为运行时间长, 想...
  • shell脚本在处理自动循环或大的任务方面可节省大量的时间,通过创建一个处理任务的命令清单,使用变量、条件、算术和循环等方法快速创建脚本以完成相应工作,这比在命令行下一个个敲入命令要省时省力得多。...
  • 你了解Linux系统么?...shell脚本在处理自动循环或大的任务方面可节省大量的时间,通过创建一个处理任务的命令清单,使用变量、条件、算术和循环等方法快速创建脚本以完成相应工作,这比在命令行下一个
  • shell脚本在处理自动循环或大的任务方面可节省大量的时间,通过创建一个处理任务的命令清单,使用变量、条件、算术和循环等方法快速创建脚本以完成相应工作,这比在命令行下一个个敲入命令要省时省力得多。...
  • for循环是我们在编写Linux脚本时常用的控制语句,很多初学者在接触for循环的时候经常迷糊,因为for循环的形式真的有点多!我在学习的时候也比较犯难,以致于后来应用for循环的时候经常还要打开百度查上一查。最近...
  • 前段时间项目中需要用shell脚本批量处理给定的两个日期范围内所有日期产生的日志,当时以为shell处理不方便就用c++来处理了。后面用shell实现了下,发现也挺简单的。一、思路流程1、显然不能直接把这两个日期当作...
  • 通过执行脚本时传递参数的方式,传递7个数值,用while循环在脚本中实现将这7个数值加和??? 有图更好 由于刚学,还不会做,望大神指点指点,赶时间,不然也不会出此下策了,,谢谢了

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 234
精华内容 93
关键字:

linuxshell时间循环

linux 订阅