数组结合循环处理重复性操作的shell实例

本文分享了两个实用的Shell脚本案例:一是批量转换IP地址为域名;二是备份指定目录下当天修改过的文件到另一目录,并按特定格式命名。通过这两个案例,展示了如何将理论知识应用于实际操作。

  最近在论坛看到两个帖子,一个是IP地址批量转换,另一个是备份文件夹下当天数据到另一个文件夹,并将文件夹命名为$用户名+$时间+$文件名的格式,刚好最近在学习shell就用他们来练手了,算是实践结合理论了。


1. IP批量转换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/bin/bash
# It is a scripts of IP address quantity convert to hostname.
#E_FILE_EXIST=65
#
#if [ ! -f $1 ];then
#   echo "Usage:`basename $0` filename."
#   exit $E_FILE_EXIST
#fi
#IP=(`cat $1`)
IP=(
8.8.8.8
202.96.209.5 202.96.209.133 202.96.209.6
www.sohu.com
)
echo ------------------------------------------------------------------------
IP_num=${#IP[*]}
for ((i=0;i<"$IP_num";i++))
do
host_name=`host ${IP[$i]} | awk '{print $NF}'`
echo -n -e "${IP[$i]} ---> `echo $host_name` \n"
done
echo ------------------------------------------------------------------------
IP_number=${#IP[*]}
while "$IP_number" -gt 0 ]
do
IP_number=$(($IP_number-1))
host_name=`host ${IP[$IP_number]} | awk '{print $NF}'`
echo -n -e "${IP[$IP_number]} ---> `echo $host_name`\n"
done
echo ------------------------------------------------------------------------
exit 0b


2. 备份当天数据


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash
# It is backup data scripts of the same days.
# Variable "DATA_DIR" is backup diritory.
# Variable "BACKUP_DIR" is backup to paths.
DATA_DIR="/usr/local/bin/scripts"
BACKUP_DIR="/tmp"
# ls -l $DATA_DIR
# read -p "Please enter dirtory name(Usage:/paths/dirtory):" BACKUP_DIR
BACKUP_FILE=(`find $DATA_DIR -mtime -1 | awk -F / '{print $NF}'`)
BACKUP_NUM=${#BACKUP_FILE[*]}
NOW_USER=`whoami`
NOW_DATE=`date +_%Y-%m-%d_`
for ((i=1;i<$BACKUP_NUM;i++))
do
/bin/cp -rf $DATA_DIR/${BACKUP_FILE[$i]} $BACKUP_DIR/"$NOW_USER$NOW_DATE${BACKUP_FILE[$i]}"
# 这里有个小技巧,“find -mtime”获取的数据第一个是当前目录,不需要备份,而数组是从0开始;所以这了i从1开始计数刚好规避了这个不需要的备份。
echo "copy file(or diretory) \"$DATA_DIR/${BACKUP_FILE[$i]}\" to \"$BACKUP_DIR/$NOW_USER$NOW_DATE${BACKUP_FILE[$i]}\""
done
exit 0










本文转自 chengchow 51CTO博客,原文链接:http://blog.51cto.com/chengchow/1323584,如需转载请自行联系原作者
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值