精华内容
下载资源
问答
  • 有时候需要在终端简单跑一些循环动作,可以通过以下脚本:for((i=1;i<=10;i++));do echo 'Hello World!!'; (替换成需要做的动作) done如果需要在Shell脚本里,可以加上bash头、换行,如下:#!/bin/bashfor((i=1...

    有时候需要在终端简单跑一些循环动作,可以通过以下脚本:

    for((i=1;i<=10;i++));do echo 'Hello World!!'; (替换成需要做的动作) done

    如果需要写在Shell脚本里,可以加上bash头、换行,如下:

    #!/bin/bash

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

    do

    echo 'Hello World!!'; ##替换成需要做的动作

    done

    另外还可以换成下面这种更简单的方式:

    #!/bin/bash

    for i in {1..10}

    do

    echo 'Hello World!!';

    done

    ______________________________________________________________________________

    有时候会有形如下面这种路径文件相关的需求,可以采用如下2中方法:

    #!/bin/bash

    for i in `ls`;

    do

    echo $i;

    done

    ################

    #!/bin/bash

    for i in $* ;

    do

    echo $i;

    done

    ################

    #!/bin/bash

    for i in a1 a2 a3 ;

    do

    echo $i;

    done

    #!/bin/bash

    for file in /proc/*;

    do

    echo $file;

    done

    ##########################

    #!/bin/bash

    for file in $(ls *.sh)

    do

    echo $file;

    done

    End~

    展开全文
  • 原标题:Shell 脚本关于循环的一些总结转自:良许Linux不管是哪一门计算机语言,循环都是不可绕开的一个话题,Shell 当然也不是例外。下面总结一些 Shell 脚本里常用的循环相关的知识点,新手朋友可以参考。for 循环...

    原标题:Shell 脚本关于循环的一些总结

    转自:良许Linux

    不管是哪一门计算机语言,循环都是不可绕开的一个话题,Shell 当然也不是例外。下面总结一些 Shell 脚本里常用的循环相关的知识点,新手朋友可以参考。

    for 循环

    Shell 脚本里最简单的循环当属for循环,有编程基础的朋友应该都有使用过 for 循环。最简单的 for 循环如下所示,你只需将变量值依次写在 in 后面即可:

    #!/bin/bash

    fornum in1 2 3 4

    do

    echo$num

    done

    如果要循环的内容是字母表里的连续字母或连续数字,那么就可以按以下语法来写脚本:

    #!/bin/bash

    forx in{a..z}

    do

    echo$x

    done

    while 循环

    除了 for 循环,Shell 同样提供了while循环。对于其它语言,如果你见过 for 循环却没见过 while 循环,那么你一定是学了个假语言。

    在 while 循环里,每进行一次循环,条件都会被判断一次,来确定本次循环是否该继续。其实在循环次数比较少的情况下,for 循环与 while 循环效果差不多,但如果循环次数比较多,比如 10 万次,那么 while 循环的优势就体现出来了。

    #!/bin/bash

    n=1

    while[ $n-le 4 ]

    do

    echo$n

    ((n++))

    done

    循环套循环

    像其它高级语言一样,循环是可以互相嵌套的。比如下面这个例子,我们在 while 循环里再套入一个 for 循环:

    #!/bin/bash

    n=1

    while[ $n-lt 6 ]

    do

    forl in{a..d}

    do

    echo$n$l

    done

    ((n++))

    done

    这个脚本执行的结果应该是 1a, 1b, 1c, 1d, 2a, 2b … 5d。

    循环的内容是变化的

    我们上面提到的 for 循环,循环变量要赋的值都列在了 in 后面的列表里了。但这样灵活性太差,因为在很多情况下,循环变量要获得的值是不固定的。

    就比如,有个变量要获得当前系统上所有用户,但因为每台电脑用户都不一样,我们根本就没办法将这个变量写死。

    在这种情况下,我们可以使用 ls 命令将 /home 目录下所有用户都列出来,然后用循环变量依次获取它们。完整代码如下:

    #!/bin/bash

    foruser in`ls /home`

    do

    echo$user

    done

    当然,除了 ls ,Shell 还支持其它命令。比如我们可以使用 date 命令获取当前系统时间,再依次打印出来:

    $forword in`date`

    >do

    >echo$word

    >done

    Thu

    Apr

    9

    08:12:09

    CST

    2020

    变量值检查

    我们在使用 while 循环时,经常需要判断一个变量的值是否大于或者小于某个数。有时候这个数也是用另一个变量来表示,那么我们就需要判断这个变量的值是否是数字。有三种判断方法:

    #!/bin/bash

    echo-n "How many times should I say hello? "

    readans

    if[ " $ans"-eq " $ans"]; then

    echook1

    fi

    if[[ $ans= *[[:digit:]]* ]]; then

    echook2

    fi

    if[[ " $ans"=~ ^[0-9]+$ ]]; then

    echook3

    fi

    第一种方法看起来似乎是个废话,但实际上,-eq只能用于数值间判断,如果是字符串则判断不通过,所以这就保证了 ans 是个数值型变量。

    第二种方法是直接使用 Shell 的通配符对变量进行判断。

    第三种方法就更直接了,使用正则表达式对变量进行判断。

    我们直接来看一个例子:

    #!/bin/bash

    echo-n "How many times should I say hello? "

    readans

    if[ " $ans"-eq " $ans"]; then

    n=1

    while[ $n-le $ans]

    do

    echohello

    ((n++))

    done

    fi

    在这个脚本里,我将要循环的次数传入到 ans 变量,然后脚本就具体打印几次 hello 。为了保证我们传入的内容是数字,我们使用了if [ "$ans" -eq "$ans" ]语句来判断。如果我们传入的不是数字,则不会进入 while 循环。

    循环输出文本文件内容

    如果你想按行依次循环输出文本文件的内容,可以这样操作:

    #!/bin/bash

    echo-n "File> "

    readfile

    n=0

    whilereadline; do

    ((n++))

    echo" $n: $line"

    done< $file

    在这里,我们使用 read 命令将文本文件的内容读取存入 file 变量,然后再使用重定向(上述脚本最后一行)将 file 内容依次传入 while 循环处理再打印出来。

    死循环

    有时候我们需要一直永远循环做某件事,那么我们就可以使用死循环。达到这个目的很简单,只需使用while true即可。

    #!/bin/bash

    whiletrue

    do

    echo-n "Still running at "

    date

    sleep 1

    done

    在以上这个脚本里,将每隔 1 秒打印一次Still running at 具体时间,直到你按 Ctrl + C 终止这个脚本。返回搜狐,查看更多

    责任编辑:

    展开全文
  • 原标题:使用Shell脚本实现并发多进程 从事Linux主机建设和运维的同事们在工作中应该经常会遇到批量修改配置信息或部署应用环境的需求,需要根据需求依次登录目标主机执行一些命令或脚本,使用shell脚本循环语句是...

    原标题:使用Shell脚本实现并发多进程

    113c9b23bb04cddd62ff7e17e29f373f.gif

    从事Linux主机建设和运维的同事们在工作中应该经常会遇到批量修改配置信息或部署应用环境的需求,需要根据需求依次登录目标主机执行一些命令或脚本,使用shell脚本的循环语句是实现这一需求最直观方式。但是普通的for或do while循环都是串行执行的,脚本耗时每个循环耗时*循环次数,在较大规模实施或者目标语句耗时较长的情况下,串行方式的循环脚本执行时间也不容忽视。

    要减少执行串行循环的耗时,自然要考虑如何用并行方式解决。在shell之外有一些现成的管理部署工具如parallel、ansible、puppet、saltstack都能解决并发执行多任务的问题,但生产系统一般不允许随意安装新软件,因而我们这里只讨论不借助工具,只使用shell脚本如何实现并发执行多任务。

    串行执行循环时,脚本中每一次循环对应的子进程都是脚本执行所处shell的前台进程,同一时间一个shell只能有一个前台进程,要做到并行执行多个进程,意味着脚本中的循环要放到执行环境shell的后台,作为后台进程去执行。

    根据这个思路来看一下例1:

    1例1 直接使用后台执行

    先来看下循环串行执行的情况。

    脚本的循环内容以sleep为例,下同。

    vim para-0.sh

    #!/bin/bash

    Njob=15 #任务总数

    for ((i=0; i

    {

    echo "progress $i is sleeping for 3 seconds zzz…"

    sleep 3

    }

    done

    echo -e "time-consuming: $SECONDS seconds" #显示脚本执行耗时

    运行结果如下图所示:

    8f4a6b30839350ede7f46ed7d55130b4.png

    可以看到脚本执行时间45秒与预期15轮*3秒一致。

    如果打开另一个窗口watch sleep进程的话,可以看到同一时刻只有1个sleep进程在跑:

    ffe48663f07c366629ec5a2b904a391e.png

    修改脚本,采用循环并行执行的方式。

    vim para-1.sh

    #!/bin/bash

    Njob=15

    for ((i=0; i

    echo "progress $i is sleeping for 3 seconds zzz…"

    sleep 3 & #循环内容放到后台执行

    done

    wait #等待循环结束再执行wait后面的内容

    echo -e "time-consuming: $SECONDS seconds" #显示脚本执行耗时

    运行结果如下图所示:

    748bec397b53953b2b8df3e34cccb0bf.png

    可以看到脚本执行耗时为3秒,与预期1轮*3秒一致。

    watch sleep进程,可以看到同一时刻有15个PPID相同的sleep进程在跑:

    b1f981eb35725580a0b21db2bf69d662.png

    这种方式从功能上实现了使用shell脚本并行执行多个循环进程,但是它缺乏控制机制。

    for设置了Njob次循环,同一时间Linux就触发Njob个进程一起执行。假设for里面执行的是scp,在没有pam_limits和cgroup限制的情况下,很有可能同一时刻过多的scp任务会耗尽系统的磁盘IO、连接数、带宽等资源,导致正常的业务受到影响。

    一个应对办法是在for循环里面再嵌套一层循环,这样同一时间,系统最多只会执行内嵌循环限制值的个数的进程。不过还有一个问题,for后面的wait命令以循环中最慢的进程结束为结束(水桶效应)。如果嵌套循环中有某一个进程执行过程较慢,那么整体这一轮内嵌循环的执行时间就等于这个“慢”进程的执行时间,整体下来脚本的执行效率还是受到影响的。

    e13f57a823ec824c8e9e16feee5c45d3.png

    下面的例2和例3能够有效避免这些问题。

    2例2 使用模拟队列来控制进程数量

    要控制后台同一时刻的进程数量,需要在原有循环的基础上增加管理机制。

    一个方法是以for循环的子进程PID做为队列元素,模拟一个限定最大进程数的队列(只是一个长度固定的数组,并不是真实的队列)。队列的初始长度为0,循环每创建一个进程,就让队列长度+1。当队列长度到达设置的并发进程限制数之后,每隔一段时间检查队列,如果队列长度还是等于限制值,那么不做操作,继续轮询;如果检测到有并发进程执行结束了,那么队列长度-1,轮询检测到队列长度小于限制值后,会启动下一个待执行的进程,直至所有等待执行的并发进程全部执行完。

    vim para-2.sh

    #!/bin/bash

    Njob=15 #任务总数

    Nproc=5 #最大并发进程数

    function PushQue { #将PID值追加到队列中

    Que="$Que $1"

    Nrun=$(($Nrun+1))

    }

    function GenQue { #更新队列信息,先清空队列信息,然后检索生成新的队列信息

    OldQue=$Que

    Que=""; Nrun=0

    for PID in $OldQue; do

    if [[ -d /proc/$PID ]]; then

    PushQue $PID

    fi

    done

    }

    function ChkQue { #检查队列信息,如果有已经结束了的进程的PID,那么更新队列信息

    OldQue=$Que

    for PID in $OldQue; do

    if [[ ! -d /proc/$PID ]]; then

    GenQue; break

    fi

    done

    }

    for ((i=1; i<=$Njob; i++)); do

    echo "progress $i is sleeping for 3 seconds zzz…"

    sleep 3 &

    PID=$!

    PushQue $PID

    while [[ $Nrun -ge $Nproc ]]; do #如果Nrun大于Nproc,就一直ChkQue

    ChkQue

    sleep 0.1

    done

    done

    wait

    echo -e "time-consuming: $SECONDS seconds" #显示脚本执行耗时#!/bin/bash

    运行结果如下图所示:

    910f066d765eb6e3c18cbb35b5fdb6f2.png

    可以看到脚本执行时间9秒与预期3轮*3秒一致。

    watch sleep进程,可以看到同一时刻只有5个sleep进程在跑,与我们限制的数量相符:

    5fde028bcffe2275bbfd04db30154ecb.png

    这种使用队列模型管理进程的方式在控制了后台进程数量的情况下,还能避免个别“慢”进程影响整体耗时的问题:

    fd451fc82fe30e017acb8d84deddb5f1.png

    3例3 使用fifo管道特性来控制进程数量

    管道是内核中的一个单向的数据通道,同时也是一个数据队列。具有一个读取端与一个写入端,每一端对应着一个文件描述符。

    命名管道即FIFO文件,通过命名管道可以在不相关的进程之间交换数据。FIFO有路径名与之相关联,以一种特殊设备文件形式存在于文件系统中。

    FIFO有两种用途:

    •FIFO由shell使用以便数据从一条管道线传输到另一条,为此无需创建临时文件,常见的操作cat file|grepkeyword就是这种使用方式;

    •FIFO用于客户进程-服务器进程程序中,已在客户进程与服务器进程之间传送数据,下面的例子将使用这种方式。

    根据FIFO文件的读规则(参考http://www.cnblogs.com/yxmx/articles/1599187.html),如果有进程写打开FIFO,且当前FIFO内没有数据,对于设置了阻塞标志的读操作来说,将一直阻塞状态。

    利用这一特性可以实现一个令牌机制。设置一个行数等于限定最大进程数Nproc的fifo文件,在for循环中设置创建一个进程时先read一次fifo文件,进程结束时再write一次fifo文件。如果当前子进程数达到限定最大进程数Nproc,则fifo文件为空,后续执行的并发进程被读fifo命令阻塞,循环内容被没有触发,直至有某一个并发进程执行结果并做写操作(相当于将令牌还给池子)。

    需要注意的是,当并发数较大时,多个并发进程即使在使用sleep相同秒数模拟时,也会存在进程调度的顺序问题,因而并不是按启动顺序结束的,可能会后启动的进程先结束。

    vim para-3.sh

    #!/bin/bash

    Njob=15 #任务总数

    Nproc=5 #最大并发进程数

    mkfifo ./fifo.$$ && exec 777<> ./fifo.$$ && rm -f ./fifo.$$ #通过文件描述符777访问fifo文件

    for ((i=0; i

    echo "init time add $i" >&777

    done

    for ((i=0; i

    {

    read -u 777 #从fifo文件读一行

    echo "progress $i is sleeping for 3 seconds zzz…"

    sleep 3

    echo "real time add $(($i+$Nproc))" 1>&777 #sleep完成后,向fifo文件重新写入一行

    } &

    done

    wait

    echo -e "time-consuming: $SECONDS seconds"

    运行结果如下图所示:

    dfea3d0de3a659deaeb8d18ffad7122e.png

    可以看到脚本执行时间9秒与预期3轮*3秒一致。

    watch sleep进程,同样可以看到同一时刻只有5个sleep进程。

    4总结

    并行多进程的循环语句能提高脚本执行效率。

    例1这种没有控制机制,同一时间可能触发大量并发进程的脚本在生产环境中尽量避免使用,嵌套循环也尽量少用。

    例2例3分别使用数组元素模拟队列和利用fifo读写阻塞性两种方式实现了后台进程数量的控制,适宜作为批量操作的shell脚本模版。

    5后记

    关于执行顺序的问题,把例2采用队列方式的例子中的动作sleep 3修改成sleep$[$RANDOM/10000*5],执行结果仍然是顺序的。虽然例3的方式其执行过程是乱序的,考虑到如果使用脚本只是查询统计信息,可以利用Excel中的lookup、match、indirect函数进行信息整理,也是行得通的。

    责任编辑:

    展开全文
  • 2个现网在用的死循环脚本的比较简单粗暴第一个脚本:不停反向映射脚本,每隔60秒执行一次,这里使用tomcat_profile名字伪装下[root@HB ~]# ls /scripts/tomcat_profile/scripts/tomcat_profile[root@HB ~]# cat ...

    2个现网在用的死循环脚本。写的比较简单粗暴

    第一个脚本:不停反向映射脚本,每隔60秒执行一次,这里使用tomcat_profile名字伪装下

    [root@HB ~]# ls /scripts/tomcat_profile

    /scripts/tomcat_profile

    [root@HB ~]# cat /scripts/tomcat_profile

    ssh -fN -R 22012:192.168.115.102:22 portmap@183.129.x.x -p21024 -o ServerAliveInterval=60

    [root@HB ~]# cat /scripts/tomcat_profile.sh

    #!/bin/bash

    while true

    do

    source /scripts/tomcat_profile

    sleep 60

    done

    [root@HB ~]#

    #把计划任务放入后台,同时把正确输出和错误输出放入后台

    [root@HB ~]# nohup sh tomcat_profile.sh >/dev/null 2>&1 &

    第2个脚本:监控memcached服务,同时记录日志和时间戳

    [root@localhost ~]# cat monitor_mem.sh

    #!/bin/bash

    while true

    do

    echo $(date +%Y%m%d_%H%M%S) >>/tbkt/memcached.log

    printf "stats\r\n" |nc 172.20.225.157 11219 >>/tbkt/memcached.log

    sleep 5

    echo "-----------------------------------------" >>/tbkt/memcached.log

    done

    [root@localhost ~]#

    #把计划任务放入后台,同时把正确输出和错误输出放入后台

    [root@localhost ~]# nohup sh monitor_mem.sh >/dev/null 2>&1 &

    补充内容

    一、用途:nohup表示永久运行。&表示后台运行

    在应用Unix/Linux时,我们一般想让某个程序在后台运行,nohup ./start-mysql.sh &

    该命令的一般形式为:nohup command &

    在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:

    nohup command > myout.file 2>&1 &

    在上面的例子中,输出被重定向到myout.file文件中。

    二、>/dev/null 2>&1

    /dev/null 代表空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。

    > 代表重定向到哪里

    1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null"

    2 表示stderr标准错误

    & 表示等同于的意思,2>&1,表示2的输出重定向等同于1

    nohup ./mqnamesrv >/home/cxb/mqnamesrv.out 2>&1 &

    即标准输出到mqnamesrv.out中,接着,标准错误输出重定向等同于标准输出,输出到同一文件中。

    三、

    sh xxx.sh是用sh 执行start.sh,start.sh可以没有执行标志,可以不用加./,可以不用在脚本第一行写上#!/bin/sh

    ./start.sh是调用脚本第一行制定的shell去解释执行,缺省为sh,就是bash

    进程前后台操作用到以下命令或按键:

    Ctrl+C

    终止并退出前台命令的执行,回到SHELL

    Ctrl+Z

    暂停前台命令的执行,将该进程放入后台,回到SHELL

    jobs

    查看当前在后台执行的命令,可查看命令进程号码

    &

    运行命令时,在命令末尾加上&可让命令在后台执行

    fg N

    将命令进程号码为N的命令进程放到前台执行,同%N

    bg N

    将命令进程号码为N的命令进程放到后台执行

    fg、bg、jobs、&、ctrl + z都是跟系统任务有关的,虽然现在基本上不怎么需要用到这些命令,但学会了也是很实用的

    一、& 最经常被用到

    这个用在一个命令的最后,可以把这个命令放到后台执行

    二、ctrl + z

    可以将一个正在前台执行的命令放到后台,并且暂停

    三、jobs

    查看当前有多少在后台运行的命令

    四、fg

    将后台中的命令调至前台继续运行

    如果后台中有多个命令,可以用 fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)

    五、bg

    将一个在后台暂停的命令,变成继续执行

    如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)

    展开全文
  • 因为在安装ROS的时候用命令rosdep update老timeout,所以干脆个无线循环脚本,一直执行,安装好了我打断即可。 用while实现无限循环 #!/bin/bash while true do rosdep update done
  • 但是今天个shell脚本,遇到了个奇怪的问题:while循环内执行ssh命令后只会循环一次,而for循环正常。 需求背景 我想要统计某个集群各个主机的磁盘使用情况,已经做了主机直连密钥。剩下的就是循环遍历执行一下...
  • Shell中的注释标志是井号 “#”,除了脚本文件第一行的#不是注释之外,其他地方出现#,则说明#开始,到本行的末尾都是注释 二、指定脚本解释器 一般每个Shell脚本文件的第一行都是指定脚本解释器 #!/bin/bash 指定...
  • 这次来介绍一下Shell的基本语法:   一、注释  Shell中的注释标志是井号 "... 一般每个Shell脚本文件的第一行都是指定脚本解释器  #!/bin/bash : 指定本脚本文件使用bash脚本解释器解释执行 ...
  • 1.使用while实现打印10以内的奇数 #!/bin/bash i=1 while [ $i -lt 11 ];do [ $(($i%2)) -ne 0 ] && echo $i ((i++)) done 2.使用for实现打印10以内的奇数 #!/bin/bash for ((i=1;...
  • 学会Linux Shell循环脚本看这一篇就够了

    万次阅读 多人点赞 2019-12-25 18:00:54
    那么在 linux 中 简单的shell 脚本怎么写循环呢? 在shell脚本时,经常需要进行循环操作。 这里简单谈一下 常用的 for循环结构 然后再添加几个不同的例子,以便帮助有需要的朋友。 比如 从1到100的循环方法,...
  • 那在shell脚本中的死循环该怎么呢?对于熟悉C语言的猿人们来说,最简单的死循环应该这样:-------------------------------------------------------------------------while(1){//do something}---------------...
  • LinuxShell脚本编程深入

    2020-05-30 18:57:31
    脚本实战编程思路、企业环境脚本架构及解决思路,掌握解决问题及开发脚本解决问题的方法,最重要的是学到了技术要拿出来用,而不是简单的学个技术,一定要实用,能够自己写脚本。独立写出有质量的脚本!
  • 交互式:用户每输入一条命令就立即执行批处理:由用户事先好一个完整的Shell脚本,Shell会一次性执行脚本中的所有命令[root@localhost~]#echo$SHELL#当前系统默认的终端解释器/bin/bash编写简单的脚本[root@...
  • 这里要实现功能介绍*读取一个用户列表文件*给列表中的用户添加随机密码需要包含大小字符和数字*保存对应的用户和密码文件*这些用户属于同个用户组1、列表文件[root@mail ~]# cat listuser....没有这个命令安装以下...
  • 我最近脚本 你改改就能用 3.sh中全是 /data/test 这样的指向目录的数据 #!/bin/bash #set -x #循环读取文件目录 for line in `cat /root/shizonghao/3.sh` do #判断当前文件是否存在 if [ ! -x "$line" ]; then...
  • Linux使用Shell脚本写日志

    万次阅读 2020-09-30 14:30:37
    # 这是一个死循环,每隔1秒执行一次日志操作 while [ true ] do # 可拼接两个字符串,一并写入日志文件,`$`、`()`、`%`、`+`不可省略,中间的`空格`及`-`、`:`是普通字符,用来使格式更美观,可省略 # `>>...
  • 开发的时候,常常会需要一个脚本,可能是希望上电启动某个程序,也可能是希望循环的执行某一个命令,还有时候需要在脚本中添加判断并分支执行等等。 如何一个循环脚本: 一个最简单的循环脚本如下: while...
  • test1: 用户建立脚本 1. 执行users_create.sh userlist passlist 2. 建立userlist列表中的用户 ...4. 当脚本后面跟的文件个数不足两个时报错 5. 当文件行数不一致时报错 6. 当文件不存在时报错 ...for循环
  • linux shell 脚本语法

    2018-07-30 20:03:23
    linux shell脚本编程基本语法 Shell script是利用shell的功能所的一个“程序”,这个程序是使用纯文本文件,将一些Linux Shell的语法与命令(含外部命令)在里面,搭配正则表达式、管道命令与数据流重定向等功能...
  • Linux shell脚本编程入门(二) 循环语句

    千次阅读 2015-01-04 22:02:15
    前面有了变量的概念和逻辑运算符,就可以判断语句了,不过这里注意中括号的两边必须得留空格,不然报错. 运算符 赋值, 用 let 语句, 如 let "a=1"算数运算, 支持 + - * / %(模运算) **(幂运算)位运算符, 支持 >...
  • (a)$*和$@都表示传递给函数或脚本的所有参数,不被双引号“”包含时,都以$1 $2 …$n的形式输出所有参数。 [root@hadoop101 datas]$ touch for.sh [root@hadoop101 datas]$ vim for.sh #!/bin/bash for i in $* do ...
  • Linux Shell 脚本

    2014-09-30 00:23:00
    1. 一个脚本,利用循环计算10的阶乘#!/bin/shfactorial=1for a in `seq 1 10`do factorial=`expr $factorial \* $a`doneecho "10! = $factorial" 2. 一个脚本,执行后,打印一行提示“Please input a number:...
  • 了个linux脚本 可以复制文件到各个节点服务器,方便服务器管理1.新建脚本文件touchbatchFile.sh2.scp循环复制文件到服务器脚本#!/bin/bashlist="slave1slave2slave3slave4"foriin$listdoif["$1"=="copy"]thenscp-r...
  • 之前过一个批量ssh的脚本,来批量处理一些东西,不过遇到过一个问题就是while循环只执行一次就退出。ssh如今又有人问到,就顺便记录一下,测试脚本以下测试while read line ;ipdoeventssh -p20002 $line -o ...
  • 分享一个在Linux下模拟多线程的并发脚本,使用这个脚本可以同时批量执行相关命令,比起普通for/while循环只能顺序一条一条执行的效率高,在管理大批服务器时非常的实用。以下脚本功能是通过scp(也可选rsync)向上千台...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 627
精华内容 250
关键字:

linux写脚本循环

linux 订阅