8个实用的Shell脚本分享

本站所有内容来自互联网收集,仅供学习和交流,请勿用于商业用途。如有侵权、不妥之处,请第一时间联系我们删除!Q群:迪思分享

免费资源网 – https://freexyz.cn/

几个Shell脚本的例子,觉得还不错。

【例子:001】判断输入为数字,字符或其他 复制代码

代码如下:

#!/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 

【例子:002】求平均数 复制代码

代码如下:

#!/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.” 

【例子:003】自减输出 复制代码

代码如下:

[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 

【例子:004】在文件中添加前缀 复制代码

代码如下:

# 人名列表 

# 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 

【例子:005】批量测试文件是否存在 复制代码

代码如下:

[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.

【例子:005】用指定大小文件填充硬盘 复制代码

代码如下:

[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=counter%1000)) 

    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 

【例子:006】通过遍历的方法读取配置文件 复制代码

代码如下:

[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 

【例子:007】简单正则表达式应用 复制代码

代码如下:

[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 

【例子:008】简单的按日期备份文件 复制代码

代码如下:

#!/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…”          

免费资源网 – https://freexyz.cn/


© 版权声明
THE END
★喜欢这篇文章吗?喜欢的话,麻烦动动手指支持一下!★
点赞6 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容