[問題] 時間增減的計算
目前在寫一個備份用得程式
希望可以把要備份保留的數量做成變數來指定
像下面~設定保留 7 天
將 7 天前的檔案做刪除
del_num=7
stamp=`date +%Y%m%d_%H%M` #時間標記 , format 20110107_1256
stamp_del=`date -d' -${del_num} day' +%Y%m%d_%H%M` #要刪除的時間
echo "Time(stamp): ${stamp}"
echo "DEL(stamp_del): ${stamp_del}"
但是執行的結果如下
在刪除日期的檔名沒被抓到
感覺上是變數沒被抓進去
[root@linux10 ~]# sh test2.sh
date: invalid date ‘ -${del_num} day’
Time(stamp): 20201116_1026
DEL(stamp_del):
[root@linux10 ~]#
不知道有沒有哪位可以指點一下這個寫法是哪裡有問題?
--
『老闆你好  我是國立的』 『老闆你好   我是私立的』 『腦~~~~~~~闆~~~~~~』 Amy! 
◢    ◣有消息會跟你聯絡  ◢    ◣有消息會跟你聯絡  ◢    ◣給她個私人秘書職位
 ◤   ◥       ◥ ◢       ◤◥          ◥ ◢                 ◥◢    ◣  國立
 -○=○-             ◤    -□=□-             ◤   ◥● ●●    ◤ ◥     私立
 ◥    ◤            ︶    ◥    ◤            ︶  ●   ▼◤  ● )        尬不過
 ◢ ◥◣╱        ◥   -?  ◢ ◣◣╱        ◥   -  ◢  )●)    ▼     ◤  兩粒
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.125.62.244 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1605493899.A.E62.html
推
11/16 10:42, 
                                5年前
                            , 1F
11/16 10:42, 1F
照你說的單引號改雙引號還是不行~
del_num=7
stamp=`date +%Y%m%d_%H%M` #時間標記 , format 20110107_1256
stamp_del=`date -d" -${del_num} day" +%Y%m%d_%H%M` #要刪除的時間
echo "Time(stamp): ${stamp}"
echo "DEL(stamp_del): ${stamp_del}"
輸出結果
test2.sh: line 3:  -${{del_num}} day: bad substitution
Time(stamp): 20201116_1137
DEL(stamp_del):
※ 編輯: sanbis (59.125.62.244 臺灣), 11/16/2020 11:38:43
推
11/16 11:41, 
                                5年前
                            , 2F
11/16 11:41, 2F
推
11/16 13:13, 
                                5年前
                            , 3F
11/16 13:13, 3F
→
11/16 13:14, 
                                5年前
                            , 4F
11/16 13:14, 4F
→
11/16 13:14, 
                                5年前
                            , 5F
11/16 13:14, 5F
→
11/16 13:16, 
                                5年前
                            , 6F
11/16 13:16, 6F
→
11/16 13:16, 
                                5年前
                            , 7F
11/16 13:16, 7F
→
11/16 13:16, 
                                5年前
                            , 8F
11/16 13:16, 8F
推
11/16 13:18, 
                                5年前
                            , 9F
11/16 13:18, 9F
→
11/16 13:19, 
                                5年前
                            , 10F
11/16 13:19, 10F
推
11/16 13:23, 
                                5年前
                            , 11F
11/16 13:23, 11F
推
11/16 13:39, 
                                5年前
                            , 12F
11/16 13:39, 12F
→
11/16 13:39, 
                                5年前
                            , 13F
11/16 13:39, 13F
→
11/16 17:11, 
                                5年前
                            , 14F
11/16 17:11, 14F
→
11/16 17:27, 
                                5年前
                            , 15F
11/16 17:27, 15F
最後是這個樣子~
#!/bin/sh
#!/bin/dash
del_num=7
stamp=`date +%Y%m%d_%H%M` #時間標記 , format 20110107_1256
stamp_del=`date -d" -${del_num}day" +%Y%m%d_%H%M` #要刪除的時間
echo "Time(stamp): ${stamp}"
echo "DEL(stamp_del): ${stamp_del}"
輸出結果為
Time(stamp): 20201116_1744
DEL(stamp_del): 20201109_1744
-${del_num}day
這個 - 不能拿掉~
不然就變成往後算七天了~
感激上面的幾位提供的意見~m(_ _)m
※ 編輯: sanbis (59.125.62.244 臺灣), 11/16/2020 17:47:42
推
11/16 18:00, 
                                5年前
                            , 16F
11/16 18:00, 16F
→
11/16 18:00, 
                                5年前
                            , 17F
11/16 18:00, 17F
推
11/16 18:02, 
                                5年前
                            , 18F
11/16 18:02, 18F
明天再來各別測試~
→
11/17 17:24, 
                                5年前
                            , 19F
11/17 17:24, 19F
原本的計畫是在遠端主機上執行備份並用 FTP 上傳~
結果測試以後…………
遠端主機權限沒有提供 FTP 傳輸檔案~
要改用 PHP 去寫這個傳輸檔案的功能~
整個備份架構重新更改中~
(眼神死~Orz
※ 編輯: sanbis (61.224.154.49 臺灣), 11/18/2020 01:56:27
→
11/18 06:31, 
                                5年前
                            , 20F
11/18 06:31, 20F
→
11/18 06:31, 
                                5年前
                            , 21F
11/18 06:31, 21F
有提供 FTP 上傳/下載檔案功能
只是你用 script 直接執行就不支援
至於 sftp 。。。。
遠端主機連 SSH 都沒有~怎麼可能會有 sftp
※ 編輯: sanbis (59.125.62.244 臺灣), 11/18/2020 15:41:40
剛剛重新測試~
#!/bin/sh
#!/bin/dash
這個不是必要的
只要把 ' -${del_num} day' 改為雙引號就可以了
(之前說失敗可能是眼睛脫窗沒看清楚?)
del_num=7
stamp=`date +%Y%m%d_%H%M` #時間標記 , format 20110107_1256
stamp_del=`date -d" -${del_num} day" +%Y%m%d_%H%M` #要刪除的時間
echo "Time(stamp): ${stamp}"
echo "DEL(stamp_del): ${stamp_del}"
※ 編輯: sanbis (59.125.62.244 臺灣), 11/18/2020 15:47:22
Linux 近期熱門文章
PTT數位生活區 即時熱門文章