天天看點

shell整理(34)===date 指令的小腳本

(一)接受一個輸入,判斷是不是一個日期,使用者的輸入可以是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 &amp;&gt;</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 &lt;字元串&gt; :顯示自符串所指的日期與時間。字元串前後加上雙引号,好像有的不加也可以,具體情況具體分析

例如:

[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 &lt;字元串&gt;:根據字元串來設定日期與時間,隻有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>