shell指令碼 連線資料庫 新增資料 查詢資料 連線不同資料庫 shell日期獲取 格式三分鐘前 上週 昨天修改
註釋:shell 單括號運算子號:a=$(date);等同於:a=`date`
雙括號運算子:a=$((1+2));echo $a;等同於:a=`expr 1 + 2`
東西有點多,就一起都講了。
日期格式:
獲取當前日期:1,date "+%Y-%m-%d %H:%M:%S" 結果:2018-08-09 18:12:18
2,date -d "now" +%Y-%m-%d now 可以換成yesterday等 如:date -d "1 days ago" +%Y-%m-%d
當前時間微妙數:1,date "+%s" 結果:1533809599
2,date +%s -d'2018-08-08 00:00:00'
獲取具體日期的前幾時間:
1,為 date -d "n days ago $yesterday" +%Y-%m-%d
n 的取值範圍為任何整數,例如-3,-2,0,1,2,3,等等.......days 可以換成 minutes hours week 等等。
時間相加:轉換成 微妙數進行操作 date +%Y-%m-%d\ %H:%M:%S -d "1970-01-01 UTC $time1 seconds"
相減 :date +%s -d '2010-01-01' - date +%s -d '2009-01-01 11:11:11'
連線資料庫:
#!/bin/bash
#連線MySQL資料庫
Host=127.0.0.1(或者資料庫伺服器地址)
User=username
PW=password
#本地連線
mysql -u$User -p$PW <<EOF #開始SQL語句
use DATABASE_NAME;#選擇資料庫(選擇模式)
SELECT * FROM TABLE_NAME;#執行SQL語句
COMMIT;#對於更新表格的操作執行commit語句
EOF #結束SQL語句
#遠端連線
mysql -h$Host -u$User -p$PW <<EOF #指定Host,其他不變
use DATABASE_NAME;
SELECT * FROM TABLE_NAME;
COMMIT;
如果要操作多個數據庫,要建立多個數據庫連線
depts=`mysql -u $USER $DATABASE <<EOF | tail -n +2
SELECT DISTINCT dept FROM $TABLE;
EOF`
data=`mysql -h$les_Host -p$les_PW -u$les_User -D$les_db -s <<EOF #指定Host,其他不變
SELECT count(*) FROM $les_tb WHERE actual_start_time<="$init_time" AND status=1;
COMMIT;
EOF`
將資料儲存在變數裡面,注意:第二個資料庫語句 -s 如果不增加 -s 會放回字串,如果下面語句需要使用的話,這樣會報錯的
上面的語句 返回的結果是 data 的值為: count(*) 250
定時任務執行:
直接用crontab命令編輯
cron服務提供crontab命令來設定cron服務的,以下是這個命令的一些引數與說明:
crontab -u //定某個使用者的cron服務,一般root使用者在執行這個命令的時候需要此引數
crontab -l //列出某個使用者cron服務的詳細內容
crontab -r //刪除沒個使用者的cron服務
crontab -e //編輯某個使用者的cron服務
記住幾個特殊符號的含義:
“*”代表取值範圍內的數字,
“/”代表”每”,
“-”代表從某個數字到某個數字,
“,”分開幾個離散的數字
使用方法:參考Linux 執行定時任務 shell指令碼
最後推薦:shell生成隨機字串的方法: shell 生成指定範圍隨機數與隨機字串
我的指令碼的程式碼:託管github:mydash 指令碼連線資料庫