推 ckc1ark: 單引號改用雙引號 11/16 10:42
照你說的單引號改雙引號還是不行~
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
推 bitlife: day前面空百拿掉 11/16 11:41
推 ucrxzero: -要拿掉 -在變數裡面有特別意義 11/16 13:13
→ ucrxzero: 還是+忘了 11/16 13:14
→ ucrxzero: 反正改了就應該好了 11/16 13:14
→ ucrxzero: 我記得是dash在變數是若空則q的意義 11/16 13:16
→ ucrxzero: escape 掉那個dash用返斜線試試看 我懶得試了但應該是 11/16 13:16
→ ucrxzero: 這原因 11/16 13:16
推 ucrxzero: 我輸出你修改後的可以欸 11/16 13:18
→ ucrxzero: 我看是不是sh dash bash版本的關係 11/16 13:19
推 ucrxzero: 第一行加個#!/bin/bash試試看 11/16 13:23
推 ucrxzero: #!/bin/sh #!/bin/dash 都試試看 11/16 13:39
→ ucrxzero: 先不要動- 11/16 13:39
→ a58524andy: 個人script寫完都會先shellcheck 因為實在是不太熟XD 11/16 17:11
→ ucrxzero: 等樓主看看怎麼說 11/16 17:27
最後是這個樣子~
#!/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
推 ucrxzero: 一個就好 不要兩個 11/16 18:00
→ ucrxzero: 可以兩個嗎== 11/16 18:00
推 ucrxzero: 是請你個別試試看那三個 11/16 18:02
明天再來各別測試~
→ newversion: 刪除7天前資料, 用 find -mtime -delete 最簡單 11/17 17:24
原本的計畫是在遠端主機上執行備份並用 FTP 上傳~
結果測試以後…………
遠端主機權限沒有提供 FTP 傳輸檔案~
要改用 PHP 去寫這個傳輸檔案的功能~
整個備份架構重新更改中~
(眼神死~Orz
※ 編輯: sanbis (61.224.154.49 臺灣), 11/18/2020 01:56:27
→ bitlife: 說不定是提供sftp? 畢竟ftp和telnet一樣都是以前明碼傳輸 11/18 06:31
→ bitlife: 時代的產物,不提供很正常 11/18 06:31
有提供 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