linux之shell:利用日期进行文件创建

sh03.sh 


#!/bin/bash
#program
#  program creates three files,which named by user's input
#  and date command
#History:
#2013/12/26 yusiyu First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH


#1.让用户输入文件名,并取得fileuser这个变量;
echo -e "I will use 'touch' command to create 3 files " #纯粹的显示信息
read -p "please input your filename :" fileuser #提示用户输入


#2.为了避免用户随意按【Enter】,利用变量功能分析文件名是否有设置
filename=${fileuser:-"filename"} #开始判断有否配置文件名


#3.开始利用date命令来取得所需文件名了
date1=$(date --date='2 days ago' +%Y%m%d) #前两天的日期
date2=$(date --date='1 days ago' +%Y%m%d) #前一天的日期
date3=$(date +%Y%m%d) #今天的日期
file1=${filename}${date1}
file2=${filename}${date2}
file3=${filename}${date3}


#4.创建文件名。
touch "$file1"
touch "$file2"
touch "$file3"


在这里面,有两个是比较不理解的



a. filename=${fileuser:-"filename"} # 开始判断有否配置档名


这个是shell进行变量判断的方式,如下表


变量配置方式 str 没有配置 str 为空字符串 str 已配置非为空字符串
var=${str-expr} var=expr var= var=$str
var=${str:-expr} var=expr var=expr var=$str
是第二种情况的形式,下面直接把这条语句拆分分二种情况来看


1)当fileuser没有配置或者为空字符串的时候,filename=filename,因为filename本身是一个变量,所以使用"filename"或者'filename',这就是单纯的字符串了。最终运行的结果,就是创建了三个filename20130908类似的文件


2)当fileuser有赋值的时候,filename=$fileuser,这种情况下创建 的是wang20130908的文件,这个wang是输入的fileuser.


b. date1=$(date --date='2 days ago' +%Y%m%d) 


这个可以使用man date来查看date的参数,


date --date='2 days ago' 是显示2天前的时候,这个时候的显示还是类似这样子的显示格式


[root@localhost scripts]# date --date='2 days ago'


Tue Sep 3 15:16:40 CST 2013


date +%Y%m%d是把显示的格式,在+号前是有个空格的,不能少


[root@localhost scripts]# date +%Y%m%d
20130905


 
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值