(一)接受一個輸入,判斷是不是一個日期,使用者的輸入可以是2017-10-1 或 2017.10.1 或2017/10/1
shell代碼如下
<code>#!/bin/bash</code>
<code>read</code> <code>-p </code><code>"Input:"</code> <code>date</code>
<code>a=`</code><code>echo</code> <code>$</code><code>date</code> <code>| </code><code>awk</code> <code>-F</code><code>'[./-]'</code> <code>'{print $1"/"$2"/"$3}'</code> <code>`</code>
<code> </code><code>date</code> <code>-d $a &></code><code>/dev/null</code>
<code>if</code> <code>[ $? -</code><code>eq</code> <code>0 ];</code><code>then</code>
<code> </code><code>echo</code> <code>"ok"</code>
<code>else</code>
<code> </code><code>echo</code> <code>"no"</code>
<code>fi</code>
(二)将日期寫入一個文本,判斷這個文本中的日期分别是這一年的哪一天。
例如
[root@localhost ding1]# cat file1
2017-10-1
2016-2-2
2017-1-1
[root@localhost ding1]#
<code>str () {</code>
<code># a=`echo $line | tr '/.-' '/'`</code>
<code> </code><code>a=`</code><code>echo</code> <code>$line | </code><code>awk</code> <code>-F </code><code>"[./-]"</code> <code>'{print $1"/"$2"/"$3}'</code><code>`</code>
<code> </code><code>date</code> <code>-d $a +%j</code>
<code>}</code>
<code>#set -x</code>
<code>cat</code> <code>file1 | </code><code>while</code> <code>read</code> <code>line</code>
<code>do</code>
<code> </code><code>str</code>
<code>done</code>
<code>#set +x</code>
簡單的date 指令總結:
date -d <字元串> :顯示自符串所指的日期與時間。字元串前後加上雙引号,好像有的不加也可以,具體情況具體分析
例如:
[root@localhost ding1]# date -d 2017-1-1 +%j #加%j 表示該年中的第幾天
001
[root@localhost ding1]# date -d +%j
date: 無效的日期"+%j"
也就是說date -d 後面必須指定一個字元串。
[root@localhost ding1]# date -d 2017-1-1 #顯示字元串所指的時間與日期
2017年 01月 01日 星期日 00:00:00 CST
date +%F 顯示目前的時間,(年-月-日),例如:
[root@localhost ding1]# date +%F
2017-10-05
+%F 就相當于+%y-%m-%d
[root@localhost ding1]# date +%y-%m-%d
17-10-05
[root@localhost ding1]# date +%y*%m*%d #中間的符号自己定義
17*10*05
例如我要顯示下個月和下一年的今天
[root@localhost ding1]# date -d +1month +%y-%m-%d
17-11-05
[root@localhost ding1]# date -d +1year +%F
2018-10-05
date -s <字元串>:根據字元串來設定日期與時間,隻有root權限才能設定,其他隻能檢視。字元串前後加上雙引号
[root@localhost ding1]# date
2017年 10月 05日 星期四 10:21:52 CST
[root@localhost ding1]# date -s 2012-5-23 01:01:10
date: 參數"01:01:10" 缺少前導的"+";
當使用選項來描述日期是,任何非選項參數都必須以"+"所引導的字元串出現
請嘗試執行"date --help"來擷取更多資訊。
[root@localhost ding1]# date -s "2012-5-23 01:01:10" #這個地方加上雙引号
2012年 05月 23日 星期三 01:01:10 CST
2012年 05月 23日 星期三 01:01:13 CST
<b>本文轉自 大雪兒 51CTO部落格,原文連結:http://blog.51cto.com/dingxue/1970420,如需轉載請自行聯系原作者</b>