對這文章發表回應
發表限制: 非會員 可以發表
發表者: 冷日 發表時間: 2012/7/12 10:00:31
隨日期變化:利用 date 進行檔案的建立
想像一個狀況,假設我的伺服器內有資料庫,資料庫每天的資料都不太一樣,因此當我備份時, 希望將每天的資料都備份成不同的檔名,這樣才能夠讓舊的資料也能夠保存下來不被覆蓋。 哇!不同檔名呢!這真困擾啊?難道要我每天去修改 script ?
不需要啊!考慮每天的『日期』並不相同,所以我可以將檔名取成類似: backup.2009-02-14.data , 不就可以每天一個不同檔名了嗎?呵呵!確實如此。那個 2009-02-14 怎麼來的?那就是重點啦!接下來出個相關的例子: 假設我想要建立三個空的檔案 (透過 touch) ,檔名最開頭由使用者輸入決定,假設使用者輸入 filename 好了,那今天的日期是 2009/02/14 , 我想要以前天、昨天、今天的日期來建立這些檔案,亦即 filename_20090212, filename_20090213, filename_20090214 ,該如何是好?
上面的範例鳥哥使用了很多在十一章介紹過的概念: 包括小指令『 $(command) 』的取得訊息、變數的設定功能、變數的累加以及利用 touch 指令輔助! 如果你開始執行這個 sh03.sh 之後,你可以進行兩次執行:一次直接按 [Enter] 來查閱檔名是啥? 一次可以輸入一些字元,這樣可以判斷你的腳本是否設計正確喔!
原文出處:鳥哥的 Linux 私房菜 -- 學習 Shell Scripts
想像一個狀況,假設我的伺服器內有資料庫,資料庫每天的資料都不太一樣,因此當我備份時, 希望將每天的資料都備份成不同的檔名,這樣才能夠讓舊的資料也能夠保存下來不被覆蓋。 哇!不同檔名呢!這真困擾啊?難道要我每天去修改 script ?
不需要啊!考慮每天的『日期』並不相同,所以我可以將檔名取成類似: backup.2009-02-14.data , 不就可以每天一個不同檔名了嗎?呵呵!確實如此。那個 2009-02-14 怎麼來的?那就是重點啦!接下來出個相關的例子: 假設我想要建立三個空的檔案 (透過 touch) ,檔名最開頭由使用者輸入決定,假設使用者輸入 filename 好了,那今天的日期是 2009/02/14 , 我想要以前天、昨天、今天的日期來建立這些檔案,亦即 filename_20090212, filename_20090213, filename_20090214 ,該如何是好?
[root@www scripts]# vi sh03.sh
#!/bin/bash
# Program:
# Program creates three files, which named by user's input
# and date command.
# History:
# 2005/08/23 VBird 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"
上面的範例鳥哥使用了很多在十一章介紹過的概念: 包括小指令『 $(command) 』的取得訊息、變數的設定功能、變數的累加以及利用 touch 指令輔助! 如果你開始執行這個 sh03.sh 之後,你可以進行兩次執行:一次直接按 [Enter] 來查閱檔名是啥? 一次可以輸入一些字元,這樣可以判斷你的腳本是否設計正確喔!
原文出處:鳥哥的 Linux 私房菜 -- 學習 Shell Scripts