shell整理(34)===date 命令的小腳本
(一)接受一個輸入,判斷是不是一個日期,用戶的輸入可以是2017-10-1 或 2017.10.1 或2017/10/1
shell代碼如下
#!/bin/bash
read -p "Input:" date
a=`echo $date | awk -F‘[./-]‘ ‘{print $1"/"$2"/"$3}‘ `
date -d $a &>/dev/null
if [ $? -eq 0 ];then
echo "ok"
else
echo "no"
fi
(二)將日期寫入一個文本,判斷這個文本中的日期分別是這一年的哪一天。
例如
[[email protected] ding1]# cat file1
2017-10-1
2016-2-2
2017-1-1
[[email protected] ding1]#
shell代碼如下
str () {
# a=`echo $line | tr ‘/.-‘ ‘/‘`
a=`echo $line | awk -F "[./-]" ‘{print $1"/"$2"/"$3}‘`
date -d $a +%j
}
#set -x
cat file1 | while read line
do
str
done
#set +x
簡單的date 命令總結:
date -d <字符串> :顯示自符串所指的日期與時間。字符串前後加上雙引號,好像有的不加也可以,具體情況具體分析
例如:
[[email protected] ding1]# date -d 2017-1-1 +%j #加%j 表示該年中的第幾天
001
[[email protected] ding1]# date -d +%j
date: 無效的日期"+%j"
[[email protected] ding1]#
也就是說date -d 後面必須指定一個字符串。
[[email protected] ding1]# date -d 2017-1-1 #顯示字符串所指的時間與日期
2017年 01月 01日 星期日 00:00:00 CST
[[email protected] ding1]#
date +%F 顯示當前的時間,(年-月-日),例如:
[[email protected] ding1]# date +%F
2017-10-05
[[email protected] ding1]#
+%F 就相當於+%y-%m-%d
例如:
[[email protected] ding1]# date +%y-%m-%d
17-10-05
[[email protected] ding1]# date +%y*%m*%d #中間的符號自己定義
17*10*05
[[email protected] ding1]#
例如我要顯示下個月和下一年的今天
[[email protected] ding1]# date -d +1month +%y-%m-%d
17-11-05
[[email protected] ding1]# date -d +1year +%F
2018-10-05
[[email protected] ding1]#
date -s <字符串>:根據字符串來設置日期與時間,只有root權限才能設置,其他只能查看。字符串前後加上雙引號
[[email protected] ding1]# date
2017年 10月 05日 星期四 10:21:52 CST
[[email protected] ding1]# date -s 2012-5-23 01:01:10
date: 參數"01:01:10" 缺少前導的"+";
當使用選項來描述日期是,任何非選項參數都必須以"+"所引導的字符串出現
請嘗試執行"date --help"來獲取更多信息。
[[email protected] ding1]# date -s "2012-5-23 01:01:10" #這個地方加上雙引號
2012年 05月 23日 星期三 01:01:10 CST
[[email protected] ding1]# date
2012年 05月 23日 星期三 01:01:13 CST
[[email protected] ding1]#
本文出自 “IT生活” 博客,請務必保留此出處http://dingxue.blog.51cto.com/12290895/1970420
shell整理(34)===date 命令的小腳本