1. 程式人生 > >shell指令碼 連線資料庫 新增資料 查詢資料 連線不同資料庫 shell日期獲取 格式三分鐘前 上週 昨天修改

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 生成指定範圍隨機數與隨機字串 

Linux下使用shell指令碼自動執行指令碼檔案

 

我的指令碼的程式碼:託管github:mydash 指令碼連線資料庫