新浦京81707con > 注册购买 > Shell高级技巧,Shell脚本实现的单机流量统计功能

原标题:Shell高级技巧,Shell脚本实现的单机流量统计功能

浏览次数:98 时间:2019-07-24

在网络看看那个单机流量的本子,挺不错的。

1、简介

二十五、通过FTP下载钦命的文本:

复制代码 代码如下:

2、read

      相比于手工业调用FTP命令下载文件,该脚本提供了尤其便利的操作办法。
      /> cat > test25.sh
      #!/bin/sh
      #1. 测量试验脚本参数数量的实用。    
      if [ $# -ne 2 ]; then
          echo "Usage: $0 ftp://... username" >&2
          exit 1
      fi
      #2. 取得第二个参数的前多个字符,如若不是"ftp://",则视为违法FTP U瑞虎L格式。这里cut的-c选项表示依照字符的点子截取第一到第两个字符。
      header=`echo $1 | cut -c1-6`
      if [ "$header" != "ftp://" ]; then
          echo "$0: Invalid ftp URL." >&2
          exit 1
      fi
      #3. 合法ftp URL的例子:ftp://ftp.myserver.com/download/test.tar
      #4. 针对性地点的URAV4L示例,cut命令通过/字符作为分隔符,那样第二个域字段表示server(ftp.myserver.com)。
      #5. 在截取filename时,cut命令也是通过/字符作为分隔符,可是"-f4-"将赢得从第多个字段开头的背后全体字段(download/test.tar)。
      #6. 通过basename命令获取filename的文书名部分。
      server=`echo $1 | cut -d/ -f3`
      filename=`echo $1 | cut -d/ -f4-`
      basefile=`basename $filename`
      ftpuser=$2
      #7. 这里须求调用stty -echo,以便前面包车型地铁密码输入不会显得,在输入密码然后,须要再重新张开该选用,以有限援助前边的输入能够过来突显。
      #8. echo "",是效仿一次换换。
      echo -n "Password for $ftpuser: "
      stty -echo
      read password
      stty echo
      echo ""
      #9. 经过HERE文书档案,批量实施ftp命令。
      echo ${0}: Downloading $baseile from server $server.
      ftp -n << EOF
      open $server
      user $ftpuser $password
      get $filename $basefile
      quit
      EOF
      #10.Shell放置变量$?表示上五个Shell进度的淡出值,0象征成功实行,别的值均表示差异原因的败诉。
      if [ $? -eq 0 ]; then
          ls -l $basefile
      fi
      exit 0
      CTRL D
      /> ./test25.sh  ftp://ftp.myserver.com/download/test.tar stephen
      Password for stephen:
      ./test25.sh: Downloading from server ftp.myserver.com.
      -rwxr-xr-x. 1 root root 678 Dec  9 11:46 test.tar

#!/bin/sh
usage(){
echo “Usage: $0 [-i INTERFACE] [-s INTERVAL] [-c COUNT]”
echo
echo “-i INTERFACE”
echo “    The interface to monitor, default is eth0.”
echo “-s INTERVAL”
echo “    The time to wait in seconds between measurements, default is 3 seconds.”
echo “-c COUNT”
echo “    The number of times to measure, default is 10 times.”
exit 3
}
readargs(){
while [ "$#" -gt 0 ] ; do
  case “$1″ in
   -i)
    if [ "$2" ] ; then
     interface=”$2″
     shift ; shift
    else
     echo “Missing a value for $1.”
     echo
     shift
     usage
    fi
   ;;
   -s)
    if [ "$2" ] ; then
     sleep=”$2″
     shift ; shift
    else
     echo “Missing a value for $1.”
     echo
     shift
     usage
    fi
   ;;
   -c)
    if [ "$2" ] ; then
     counter=”$2″
     shift ; shift
    else
     echo “Missing a value for $1.”
     echo
     shift
     usage
    fi
   ;;
   *)
    echo “Unknown option $1.”
    echo
    shift
    usage
   ;;
  esac
done
}
checkargs(){
if [ ! "$interface" ] ; then
  interface=”eth0″
fi
if [ ! "$sleep" ] ; then
  sleep=”3″
fi
if [ ! "$counter" ] ; then
  counter=”10″
fi
}
printrxbytes(){
/sbin/ifconfig “$interface” | grep “RX bytes” | cut -d: -f2 | awk ‘{ print $1 }'
}
printtxbytes(){
/sbin/ifconfig “$interface” | grep “TX bytes” | cut -d: -f3 | awk ‘{ print $1 }'
}
bytestohumanreadable(){
multiplier=”0″
number=”$1″
while [ "$number" -ge 1024 ] ; do
  multiplier=$(($multiplier 1))
  number=$(($number/1024))
done
case “$multiplier” in
  1)
   echo “$number Kb”
  ;;
  2)
   echo “$number Mb”
  ;;
  3)
   echo “$number Gb”
  ;;
  4)
   echo “$number Tb”
  ;;
  *)
   echo “$1 b”
  ;;
esac
}
 
printresults(){
while [ "$counter" -ge 0 ] ; do
  counter=$(($counter – 1))
  if [ "$rxbytes" ] ; then
   oldrxbytes=”$rxbytes”
   oldtxbytes=”$txbytes”
  fi
  rxbytes=$(printrxbytes)
  txbytes=$(printtxbytes)
  if [ "$oldrxbytes" -a "$rxbytes" -a "$oldtxbytes" -a "$txbytes" ] ; then
   echo “$(/bin/date %Y%m%d-%H%M%S) RXbytes = $(bytestohumanreadable $(($rxbytes – $oldrxbytes))) TXbytes = $(bytestohumanreadable $(($txbytes – $oldtxbytes)))”
  else
   echo “Monitoring $interface every $sleep seconds. (RXbyte total = $(bytestohumanreadable $rxbytes) TXbytes total = $(bytestohumanreadable $txbytes))”
  fi
  sleep “$sleep”
done
}
readargs “$@”
checkargs
printresults

3、运算工具

二十六、文件锁定:

测量检验如下:

4、if/then结构

      在工业应用中,有些来自于工业器械的文件将会被放置钦赐的目录下,由于那几个文件须要再被重复格式化后本事被越来越高层的软件进行拍卖。而此刻担负管理的本子程序极有十分大希望是多少个实例同期运行,由此那些实例之间就须要分明的联合,以幸免四个实例同期操作二个文本而致使的数量不包容等难点的发生。文件锁定命令能够帮助大家完成这一联机逻辑。
      /> cat > test26.sh
      #!/bin/sh
      #1. 那边需求先确认flock命令是还是不是存在。
      if [ -z $(which flock) ]; then
          echo "flock doesn't exist."
          exit 1
      fi
      #2. flock中的-e选项表示对该文件加排它锁,-w选项表示只要此刻文件正在被加锁,当前的flock命令将静观其变20秒,假设能锁住该文件,就继续实施,不然退出该命令。
      #3. 那边锁定的文书是/var/lock/lockfile1,-c选项表示,要是成功锁定,则钦命其后用双引号括起的下令,假若是八个指令,能够用分号分隔。
      #4. 方可在两个终端同临时间开动该脚本,然后观望脚本的输出,以及lockfile1文件的开始和结果。
      flock -e -w 20 /var/lock/lockfile1 -c "sleep 10;echo `date` | cat >> /var/lock/lockfile1"
      if [ $? -ne 0 ]; then
          echo "Fail."
          exit 1
      else
          echo "Success."
          exit 0
      fi
      CTRL D
   
二十七、用小文件覆盖整个磁盘:

每三秒的流量,总出口999行,能够输出到文件里,其中:前面为时间,奇骏x Packets 是收取数据包,即下载,Tx Packets 是出殡和埋葬数据包,即上传.

5、while循环

      要是大家未来遇见那样一个题目,集团的首要性材质copy到测量试验服务器上了,在直接将其删除后,依然担忧服务器供应商能够将其回复,即就是经过fdisk实行重复格式化,也长久以来存在被还原的高危害,鉴于此,大家供给编写制定三个剧本,创立比相当多小文件(5MB左右),之后不停在根本材质所在的磁盘中复制该文件,以使Linux的inode不能够再被再一次恢复,为了实现此处效果,大家须要先构造该文件,如:
      /> find . -name "" > testfile       /> ls -l testfile
      -rwxr-xr-x. 1 root root 5123678 Dec  9 11:46 testfile
      /> cat > test27.sh       #!/bin/sh       #1. 开端化计数器变量,个中max的值是基于当下亟待填写的磁盘空间和testfile的轻重计算出来的。       counter=0       max=2000000       remainder=0       #2. 每回迭代counter变量都自增一,以确定保障每回改换差别的公文。当该值大于最大值时退出。       #3. 对计数器变量counter按一千取模,那样能够在每生成一千个公文时打印二遍输出,以便看到覆盖的速度,输出时间则有助于预估还供给有个别时间能够完毕。       #4. 创设单独的、用于存放那些覆盖文件的目录。       #5. 生成不时文件,假诺写入退步打字与印刷出提示音讯。       while true       do           ((counter=counter 1))           if [ #counter -ge $max ]; then               break           fi           ((remainder=counter00))           if [ $remainder -eq 0 ]; then               echo -e "counter = $countert date = " $(date)           fi           mkdir -p /home/temp2           cat < testfile > "/home/temp/myfiles.$counter"           if [[ $? -ne 0 ]]; then               echo "Failed to wrtie file."               exit 1           fi       done       echo "Done"
      CTRL D
      /> ./test27.sh
      counter = 1000        Fri Dec  9 17:25:04 CST 2011
      counter = 2000        Fri Dec  9 17:25:24 CST 2011
      counter = 3000        Fri Dec  9 17:25:54 CST 2011
      ... ...
      与此同临时候,能够透过奉行下面包车型大巴命令监察和控制磁盘空间的使用率。      
/> watch -n 2 'df -h'*
      Every 2.0s: df -h                                       Fri Dec  9 17:31:56 2011
    
      Filesystem            Size   Used Avail Use% Mounted on
      /dev/sda2             3.9G  2.3G  1.4G  63% /
      tmpfs                  504M  100K  504M   1% /dev/shm
      /dev/sda1              49M   36M   11M  77% /boot
      /dev/sda3              15G  172M   14G   2% /home
      大家也能够在施行的经过中经过pidstat命令监察和控制脚本进度的每秒读写块数。    
 
二十八、总结当前系统中分裂运营状态的经过数量:

复制代码 代码如下:

6、for循环

      在Linux系统中,进度的运作意况主要分为八种:运行时、睡眠、甘休和丧尸。下边包车型客车本子将总括当前系统中,各个运转状态的进程数量。
      /> cat > test28.sh
      #!/bin/sh
      #1. 早先化计数器变量,分别对应于运作时、睡眠、结束和尸鬼。
      running=0
      sleeping=0
      stopped=0
      zombie=0
      #2. 在/proc目录下,满含众多以数字作为目录名的子目录,其意思为,种种数字对应于二个当下正在运营进度的pid,该子目录下包蕴部分文件用于描述与该pid进程有关的音讯。如1意味着init进度的pid。那么其子目录下的stat文件将涵盖和该进度运市场价格况相关的音讯。
      #3. cat /proc/1/stat,通过该办法得以查看init进度的运转状态,同时也能够驾驭该文件的格式,在那之中第多少个字段为经过的周转情状字段。
      #4. 透过let表明式累加种种计数器。
      for pid in /proc/[1-9]**       do           ((procs=procs 1))           stat=`awk '{print $3}' $pid/stat`           case $stat in               R) ((running=runing 1));;               S) ((sleeping=sleeping 1));;               T) ((stopped=stopped 1));;               Z) ((zombie=zombie 1));           esac       done       echo -n "Process Count: "       echo -e "Running = $runningtSleeping = $sleepingtStopped = $stoppedtZombie = $zombie."
      CTRL D
      /> ./test28.sh*
      Process Count: Running = 0      Sleeping = 136  Stopped = 0     Zombie = 0.
   
二十九、浮点数验证:

[root@host]#sh t.sh -c 999  Monitoring eth0 every 3 seconds. (RXbyte total = 6 Tb TXbytes total = 5 Tb)
20101105-201539 RXbytes = 126 Kb TXbytes = 658 Kb
20101105-201542 RXbytes = 87 Kb TXbytes = 487 Kb
20101105-201545 RXbytes = 159 Kb TXbytes = 668 Kb
20101105-201548 RXbytes = 107 Kb TXbytes = 725 Kb
20101105-201551 RXbytes = 110 Kb TXbytes = 704 Kb
20101105-201554 RXbytes = 90 Kb TXbytes = 726 Kb
20101105-201558 RXbytes = 100 Kb TXbytes = 850 Kb
20101105-201601 RXbytes = 102 Kb TXbytes = 703 Kb
20101105-201604 RXbytes = 168 Kb TXbytes = 693 Kb
20101105-201607 RXbytes = 105 Kb TXbytes = 730 Kb
20101105-201610 RXbytes = 133 Kb TXbytes = 711 Kb
20101105-201613 RXbytes = 431 Kb TXbytes = 703 Kb
20101105-201616 RXbytes = 84 Kb TXbytes = 527 Kb
20101105-201619 RXbytes = 239 Kb TXbytes = 825 Kb
20101105-201622 RXbytes = 117 Kb TXbytes = 801 Kb
20101105-201625 RXbytes = 99 Kb TXbytes = 913 Kb
20101105-201628 RXbytes = 89 Kb TXbytes = 322 Kb
20101105-201631 RXbytes = 63 Kb TXbytes = 73 Kb
20101105-201634 RXbytes = 84 Kb TXbytes = 191 Kb
20101105-201637 RXbytes = 174 Kb TXbytes = 481 Kb
20101105-201640 RXbytes = 120 Kb TXbytes = 383 Kb
20101105-201643 RXbytes = 94 Kb TXbytes = 496 Kb
20101105-201646 RXbytes = 108 Kb TXbytes = 340 Kb
20101105-201649 RXbytes = 91 Kb TXbytes = 639 Kb
20101105-201652 RXbytes = 106 Kb TXbytes = 629 Kb
20101105-201655 RXbytes = 125 Kb TXbytes = 496 Kb
20101105-201658 RXbytes = 90 Kb TXbytes = 537 Kb
澳门葡京注册,20101105-201701 RXbytes = 114 Kb TXbytes = 641 Kb

 

     浮点数数的基本点特点正是只是包括数字0到9、负号(-)和点(.),在那之中负号只可以出现在最前头,点(.)只可以出现二遍。
      /> cat > test29.sh
      #!/bin/sh
      #1. 此前的一个条条框框已经介绍了awk中match函数的成效,假若相称重返相称的职位值,不然重返0。
      #2. 对于Shell中的函数来讲,重临0表示成功,别的值表示失利,该语义等同于Linux中的进度退出值。调用者能够透过内置变量$?获取重临值,只怕当作标准表明式的一局地直接决断。
      validint() {
          ret=`echo $1 | awk '{start = match($1,/^-?[0-9] $/); if (start == 0) print "1"; else print "0"}'`
          return $ret
      }
    
      validfloat() {
          fvalue="$1"
          #3. 剖断当前参数中是还是不是满含小数零星。如若含有则要求将其拆分为整数片段和小数部分,分别伸开判断。
          if [ ! -z  $(echo $fvalue | sed 's/[^.]//g') ]; then
              decimalpart=`echo $fvalue | cut -d. -f1`
              fractionalpart=`echo $fvalue | cut -d. -f2`
              #4. 一旦整数部分不为空,可是不是合法的整型,则视为违法格式。
              if [ ! -z $decimalpart ]; then
                  if ! validint "$decimalpart" ; then
                      echo "decimalpart is not valid integer."
                      return 1
                  fi
              fi
              #5. 判别小数部分的率先个字符是或不是为-,假诺是则违法。
              if [ "${fractionalpart:0:1}" = "-" ]; then
                  echo "Invalid floating-point number: '-' not allowed after decimal point." >&2
                  return 1
              fi
              #6. 万一小数部分不为空,同有时候亦不是官方的整型,则便是违规格式。
              if [ "$fractionalpart" != "" ]; then
                  if ! validint "$fractionalpart" ; then
                      echo "fractionalpart is not valid integer."
                      return 1
                  fi
              fi
              #7. 若是整数部分仅为-,可能为空,假设此刻小数部分也是空,则为非官方格式。
              if [ "$decimalpart" = "-" -o -z "$decimalpart" ]; then
                  if [ -z $fractionalpart ]; then
                      echo "Invalid floating-point format." >&2
                      return 1
                  fi
              fi
          else
              #8. 一旦当前参数仅为-,则正是违规格式。
              if [ "$fvalue" = "-" ]; then
                  echo "Invalid floating-point format." >&2
                  return 1
              fi
              #9. 出于参数中平素一点都不小数点,假若该值不是官方的整数,则为非官方格式。
              if ! validint "$fvalue" ; then
                  echo "Invalid floating-point format." >&2
                  return 1
              fi
          fi
          return 0
      }   
      if validfloat $1 ; then
          echo "$1 is a valid floating-point value."
      fi
      exit 0
      CTRL D
      /> ./test29.sh 47895      
      47895 is a valid floating-point value.
      /> ./test29.sh 47895.33
      47895.33 is a valid floating-point value.
      /> ./test29.sh 47895.3e
      fractionalpart is not valid integer.
      /> ./test29.sh 4789t.34
      decimalpart is not valid integer.   

一、简介

三十、总括菲律宾语小说中各类单词出现的频率:
    
      那么些工夫的要紧目标是显得怎么越来越好的利用awk命令的本子。
      /> cat > test30.sh
      #!/bin/sh
      #1. 经过当前剧本的pid,生成awk脚本的有时文件名。
      #2. 捕捉频限信号,在剧本退出时去除该临时文件,防止变成多量的排泄物一时文件。
      awk_script_file="/tmp/scf_tmp.$$"
      trap "rm -f $awk_script_file" EXIT
      #3. while循环将以当前目录下的testfile作为输入并逐行读取,在读取到最后时退出循环。
      #4. getline读取到每一行将作为awk的常规输入。在内层的for循环中,i要从1方始,因为$0表示整行。NF表示域字段的多少。
      #5. 使$i作为数组的键,如若$i的值相称正则表明式"^[a-zA-Z] $",大家将其视为单词实际不是标点。每一回遭遇单词时,其键值都会递增。
      #6. 最终经过awk脚本提供的特殊for循环,遍历数组的键值数据。
      cat << 'EOF' > $awk_script_file
      BEGIN {
          while (getline < "./testfile" > 0) {
              for (i = 1; i <= NF; i) {
                  if (match($i,"^[a-zA-Z] $") != 0)
                      arr[$i]
              }
          }
          for (word in arr) {
              printf "word = %st count = %sn",word,arr[word]
          }
      }
      EOF
      awk -f $awk_script_file
      CTRL D
      /> cat testfile
      hello world liu liu , ,
      stephen liu , ?
      /> ./test30.sh
      word = hello      count = 1
      word = world     count = 1
      word = stephen count = 1
      word = liu         count = 3

1、什么是shell

shell是用户与系统交互功效的分界面。shell是一种命令解释程序,同不日常候也是一种尖端程序设计语言

2、shell常见连串

Bourne Shell(/usr/bin/sh或/bin/sh)

Bourne Again Shell(/bin/bash)

C Shell(/usr/bin/csh)

K Shell(/usr/bin/ksh)

Shell for Root(/sbin/sh)

里面:Bash在平日职业中被广泛接纳;同不常候,Bash也是大大多Linux系统私下认可的Shell;

3、shell局限性

1.1、供给开支大批量财富的天职,极其是对实行进度要求较高的地方

1.2、涉及大气的数学计算

1.3.、关键性应用(数据库,网址等)

1.4.、设计图纸只怕GUI的选拔

1.5.、需求一向访谈硬件

1.6.、开采闭源的施用(相对于开源)

4、基础

文件系统:Linux 的文件系统是一个分包了目录和文件的分段的公司结构,位于最上部的名叫根目录(root directory),用斜杠/ 来表示

目录: 是一种含有目录项的文本,各种目录项中都含有了文件名

文本名: 目录的原委称为目录项,目录项包罗了文件名,只有二种字符不容许出现在文书名中:斜杠,空字符(ASCII 值为0),斜杠用于分隔路线中的文件名,空字符用来代表路线的末段。文件名的长度一般能够直达251个字符

渠道: 一多元文件名连起来,用斜杠分隔,就叫做路线,路线用于表示文件的任务;以斜杠初始的不二秘技叫做相对路线,不然为相对路线,相对路线相对于当前职业目录

重返码:全部命令都有三个重临值,用0-255里面包车型客车莫西干发型来代表;脚本正是多少个发令,它也是有重临值,另外,脚本里面包车型客车函数也是有再次回到值

退出脚本的正规方法是鲜明地用命令exit [code]来退出,如:exit 0;exit $?

 

二、read

1、定义

read是一个buildin命令,主要成就对参数的赋值,类似C语言中的scanf;

其不但能够赋值变量,还足以赋值数组;

其输入不止是显示器,还是能是文件陈说符

2、实操

# read a --输入字符串,将字符串赋值给变量 a;# echo $a

hello world!!

# read name sex age --同时分别给四个变量赋值,输入分隔符默感觉 空格符

zhangsan male 50

# unset name sex age --删除变量

# IFS=';' --将 read 的输入分隔符改为 ';'

# vim test.sh

#!/bin/bash

prompt="Please enter your name:"

read -p "$prompt" name

echo "Greetings $name"

 

三、运算工具

1、轻易数学生运动算

# echo $((1 2**2-3*4/5%6)) --输出总结结果到显示器

# a=$((1 2**2-3*4/5%6)) --把总计结果赋给变量a

# ((a=1 2**2-3*4/5%6)) --同上

# echo "scale=3;10/3" | bc --bc总结器;保留小数点后二个人

# echo "2^10" | bc --bc计算器;计算2的10次方

# awk 'BEGIN{print 1/3}' --awk计算

2、获取随机数

# od -N4 -tu4 /dev/urandom | sed -n '1s/.* //p' --获取一个7位数的编号

# od -Ad -w24 -tu4 /dev/urandom --获取随机数

# od -tu8 /dev/urandom --获取随机数

# od -tu8 /dev/urandom | sed -r 's/^[0-9] s //' | sed -r 's/s /n/g' |cut -b1-8 |sed -r -n '/^.{8}$/p' | sed 's/^/186/' |head -n四千 |vi - --获取30000个电话号码

# od -N40000 -tu4 /dev/urandom | sed -r 's/^[0-9] (s )?//' | sed -r 's/s /n/g' | grep -vE '^s*$' > 10k_random --生成二万个随机数

# sed -r -n '/^.{8}$/p' 10k_random | head -n 100000 | sed 's/^/186/' > phone_num

3、获取数字体系

# seq 10 --获取1到10

# seq 1 2 10 --获取1到10,步长为2

# seq 10 100 --获取10到100

# seq 10 -1 1 --倒序,10到1

 

四、if/then实例

1、判别字符 "a" 是还是不是等于 "A"

# vim test.sh

#!/bin/bash

if [[ "a" = "A" ]]; then

if [ "a" = "A" ]; then

  echo "a equals A"

else

  echo "a no equals A"

fi

2、判别/root/test/test.sh是还是不是留存并装有可实施权限

# vim test.sh

#!/bin/bash

if test -x /root/test/test.sh;then

  echo "/root/test/test.sh is executable"

fi

3、判定系统是不是留存 root 用户

# vim test.sh

#!/bin/bash

if grep -E --color=auto ^root: /etc/passwd; then

  echo "user root exists"

fi

4、推断文件类型

# vim test.sh

#!/bin/bash

function isSymbolicLink() {

  file=$1

  flag=$(ls -ld $file | cut -b1)

  test "$flag" = "1"

  return $?

}

file=$1

if isSymbolicLink $file; then

  echo "Symbolic Link"

elif test -d $file; then

  echo "Directory file"

elif test -f $file; then

  echo "Regular file"

elif test -b $file; then

  echo "Block special"

elif test -c $file; then

  echo "Character special"

elif test -p $file; then

  echo "Named pipe"

elif test -S $file; then

  echo "Socket"

else

  echo "Unkown"

fi

5、判定输入数字的大大小小

# vim test.sh

#!/bin/bash

num=$1

if test "$num" -lt 10 ;then

  echo "小数字"

elif test "$num" -lt 20;then

  echo "中数字"

elif test "$num" -lt 30;then

  echo "大数字"

else

  echo "超大数字"

fi

6、从专门的学问输入获取贰个数字,并凭仗其大小输出钦定字符串

# vim test.sh

#!/bin/bash

echo -n "Enter a number: "

read num

if [ "$num" -lt 100 ]; then

echo "小于100"

elif [ "$num" -ge 100 -a "$num" -lt 200 ]; then

echo "大于等于100低于200"

elif [ "$num" -ge 200 -a "$num" -lt 300 ]; then

echo "大于等于200低于300"

else

echo "另外数字"

fi

 

五、wihle循环

1、认识

测量试验 while 关键字背后一条命令的重回码,条件为真时,程序读入while循环体中的指令;0为真。循环体如下:

while [] --while 前面运维 [ ] 命令,测试 [ ] 命令的重临码

cat /filename | while read line       --while 前边运维read 命令,测验 read 命令的重临码

do

......

done

2、循环调控语句

continue --终止当前循环,开头下二个循环

break --终止当前循环,并脱离循环体

exit --终止当前剧本

3、实例

# vim test.sh --区分 continue 与 break 的区别

#!/bin/bash

while true

do

sleep 1

本文由新浦京81707con发布于注册购买,转载请注明出处:Shell高级技巧,Shell脚本实现的单机流量统计功能

关键词: 新浦京81707con Linux Shell

上一篇:实现方法详解,实例分析

下一篇:没有了