源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

8个实用的Shell脚本分享

  • 时间:2020-05-23 22:28 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:8个实用的Shell脚本分享
几个Shell脚本的例子,觉得还不错。 [b]【例子:001】判断输入为数字,字符或其他[/b]
[u]复制代码[/u] 代码如下:
#!/bin/bash  read -p "Enter a number or string here:" input    case $input in     [0-9]) echo -e "Good job, Your input is a numberic! n" ;;  [a-zA-Z]) echo -e "Good job, Your input is a character! n" ;;         *) echo -e "Your input is wrong, input again!   n"  ;;  esac 
[b]【例子:002】求平均数[/b]
[u]复制代码[/u] 代码如下:
#!/bin/bash    # Calculate the average of a series of numbers.    SCORE="0"  AVERAGE="0"  SUM="0"  NUM="0"    while true; do      echo -n "Enter your score [0-100%] ('q' for quit): "; read SCORE;      if (("$SCORE" < "0"))  || (("$SCORE" > "100")); then      echo "Be serious.  Common, try again: "    elif [ "$SCORE" == "q" ]; then      echo "Average rating: $AVERAGE%."      break    else      SUM=$[$SUM + $SCORE]      NUM=$[$NUM + 1]      AVERAGE=$[$SUM / $NUM]    fi    done    echo "Exiting." 
[b]【例子:003】自减输出[/b]
[u]复制代码[/u] 代码如下:
[scriptname: doit.sh]  while (( $# > 0 ))  do    echo $*    shift  done             /> ./doit.sh a b c d e  a b c d e  b c d e  c d e  d e  e 
[b]【例子:004】在文件中添加前缀[/b]
[u]复制代码[/u] 代码如下:
# 人名列表  # cat namelist  Jame  Bob  Tom  Jerry  Sherry  Alice  John    # 脚本程序  # cat namelist.sh  #!/bin/bash  for name in $(cat namelist)  do          echo "name= " $name  done  echo "The name is out of namelist file"    # 输出结果  # ./namelist.sh  name=  Jame  name=  Bob  name=  Tom  name=  Jerry  name=  Sherry  name=  Alice  name=  John 
[b]【例子:005】批量测试文件是否存在[/b]
[u]复制代码[/u] 代码如下:
[root@host ~]# cat testfile.sh        #!/bin/bash      for file in test*.sh  do    if [ -f $file ];then       echo "$file existed."    fi  done    [root@host ~]# ./testfile.sh  test.sh existed.  test1.sh existed.  test2.sh existed.  test3.sh existed.  test4.sh existed.  test5.sh existed.  test78.sh existed.  test_dev_null.sh existed.  testfile.sh existed. 
[b]【例子:005】用指定大小文件填充硬盘[/b]
[u]复制代码[/u] 代码如下:
[root@host ~]# df -ih /tmp  Filesystem            Inodes   IUsed   IFree IUse% Mounted on  /dev/mapper/vg00-lvol5                         1000K    3.8K    997K    1% /tmp  [root@host ~]# cat cover_disk.sh  #!/bin/env bash  counter=0  max=3800  remainder=0  while true  do      ((counter=counter+1))      if [ ${#counter} -gt $max ];then          break      fi      ((remainder=counter00))      if [ $remainder -eq 0 ];then          echo -e "counter=$countertdate=" $(date)      fi      mkdir -p /tmp/temp      cat < testfile > "/tmp/temp/myfile.$counter"      if [ $? -ne 0 ];then          echo "Failed to write file to Disk."          exit 1      fi  done  echo "Done!"  [root@host ~]# ./cover_disk.sh  counter=1000    date= Wed Sep 10 09:20:39 HKT 2014  counter=2000    date= Wed Sep 10 09:20:48 HKT 2014  counter=3000    date= Wed Sep 10 09:20:56 HKT 2014  cat: write error: No space left on device  Failed to write file to Disk.  dd if=/dev/zero of=testfile bs=1M count=1 
[b]【例子:006】通过遍历的方法读取配置文件[/b]
[u]复制代码[/u] 代码如下:
[root@host ~]# cat hosts.allow  127.0.0.1  127.0.0.2  127.0.0.3  127.0.0.4  127.0.0.5  127.0.0.6  127.0.0.7  127.0.0.8  127.0.0.9  [root@host ~]# cat readlines.sh  #!/bin/env bash  i=0  while read LINE;do      hosts_allow[$i]=$LINE      ((i++))  done < hosts.allow  for ((i=1;i<=${#hosts_allow[@]};i++)); do      echo ${hosts_allow[$i]}  done  echo "Done"  [root@host ~]# ./readlines.sh  127.0.0.2  127.0.0.3  127.0.0.4  127.0.0.5  127.0.0.6  127.0.0.7  127.0.0.8  127.0.0.9  Done 
[b]【例子:007】简单正则表达式应用[/b]
[u]复制代码[/u] 代码如下:
[root@host ~]# cat regex.sh  #!/bin/env sh  #Filename: regex.sh  regex="[A-Za-z0-9]{6}"  if [[ $1 =~ $regex ]]  then    num=$1    echo $num  else    echo "Invalid entry"    exit 1  fi  [root@host ~]# ./regex.sh 123abc  123abc    #!/bin/env bash  #Filename: validint.sh  validint(){      ret=`echo $1 | awk '{start = match($1,/^-?[0-9]+$/);if (start == 0) print "1";else print "0"}'`      return $ret  }    validint $1    if [ $? -ne 0 ]; then      echo "Wrong Entry"      exit 1  else      echo "OK! Input number is:" $1  fi 
[b]【例子:008】简单的按日期备份文件[/b]
[u]复制代码[/u] 代码如下:
#!/bin/bash    NOW=$(date +"%m-%d-%Y")      # 当前日期  FILE="backup.$NOW.tar.gz"    # 备份文件  echo "Backing up data to /tmp/backup.$NOW.tar.gz file, please wait..."  #打印信息  tar xcvf /tmp/backup.$NOW.tar.gz /home/ /etc/ /var       # 同时备份多个文件到指定的tar压缩文件中  echo "Done..."          
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部