自定義變量:mysql
定義變量的規則:linux
將命令的返回值賦給變量sql
方式一: #!/bin/bash A=`date` echo $A 方式二: A=$(date) echo $A //Mon May 24 18:35:05 CST 2021
位置參數變量:能夠在腳本中獲取參數信息shell
$n
,n 表明一個數字,1 爲執行腳本的第一個參數,2 爲執行腳本的第二個參數,以此類推……當n大於等於10時,參數變量須要用大括號包含,例${n}$#
,獲取傳遞到腳本的參數個數$*
,以一個單字符串顯示全部向腳本傳遞的參數$@
,與$*相同,可是使用時加引號,並在引號中返回每一個參數。預約義變量數據庫
$$
,獲取腳本運行的當前進程ID號$!
,後臺運行的最後一個進程的ID號$?
,顯示最後命令的退出狀態。0表示沒有錯誤,其餘任何值代表有錯誤。算數運算符:原生bash不支持簡單的數學運算,可是能夠經過其餘命令來實現,例如 awk 和 expr,expr 最經常使用。bash
#!/bin/bash 1.使用expr TEMP=`expr 2 + 3` VAL=`expr $TEMP \* 4` //輸出 20 2.使用$((運算表達式)) VAL=$(((2 + 3) * 4)) //輸出20
關係運算符:只支持數字,不支持字符串,除非字符串的值是數字。測試
#!/bin/bash if [ 23 -ge 22 ] then echo "大於等於" fi
字符串運算符命令行
#!/bin/bash if [ 'ok' = 'ok' ] then echo "equal" fi if [ -n 'abc' ] then echo '字符串長度不爲零' fi
文件測試運算符:文件測試運算符用於檢測 Unix 文件的各類屬性。code
#!/bin/bash if [ -f /root/shell_code/hello.sh ] then echo '/root/shell_code/hello.sh 是一個文件' fi
布爾運算符:進程
#!/bin/bash if [ !false ] then echo 'true' fi if [ 1 -lt 2 -o 2 -lt 3 ] then echo 'true' fi
if else
#!/bin/bash if [ 10 -gt $A] then echo "10 大於 $A" elif [ 10 -gt $b ] then echo "10 大於 $B" elif [ 10 -gt $C ] then echo "10 大於 $C" else echo "啥也不是" fi
for 循環
#!/bin/bash for var in 1 2 3 4 5 do echo $var done
while
#!/bin/bash int=1 while [ $int -le 5 ] do echo $int let "int++" done
case ... esac
#!/bin/bash value=2 case $value in 1) echo 1 ;; 2) echo 2 ;; 3) echo 3 ;; *) echo '匹配失敗' ;; esac
需求分析:
#!/bin/bash #備份目錄 BACKUP=/data/backup/mysql #當前時間 DATETIME=$(date +%Y%m%d%H%M%S) #數據庫地址 HOST=localhost #數據庫名稱 DATABASE=test #數據庫帳號 DB_USER=root #數據庫密碼DATABASE DB_PWD=root #建立備份目錄,若是不存在,就建立 [ ! -d "${BACKUP}/${DATETIME}" ] && mkdir -p "${BACKUP}/${DATETIME}" #備份數據庫 mysqldump -u${DB_USER} -p${DB_PWD} --host=${HOST} -q -R --databases ${DATABASE} | gzip > ${BACKUP}/${DATETIME}/${DATETIME}.sql.gz #將文件處理成 tar.gz cd ${BACKUP} tar -zcvf $DATETIME.tar.gz ${DATETIME} #刪除備份源目錄 rm -rf ${BACKUP}/${DATETIME} #刪除10天前的備份文件 find ${BACKUP} -atime +10 -name "*.tar.gz" -exec rm -rf {} \; echo "備份數據庫${DATABASE} ok..." //crontab定時任務設置:30 2 * * * /root/shell_code/mysql_db_backup.sh