領導有需求,運維來完成。
需求:獲取每個庫里的註冊數登入數,需要執行指令碼1.sh login/register輸出6個庫登入/註冊的總數,指令碼如下。
好久沒寫shell了,把shell的陣列和python的陣列語法搞混了,幾個注意事項記錄一下。
注意事項:
python的陣列是arr = (1,2,3,4,5)
shell的陣列是arr=(1 2 3 4 5)
python的是用逗號分隔,shell是用空格分隔
python變數名兩邊都要有空格(沒有也可以,一般都隔開,**規範),shell都不能有空格(定義函式名除外)
python的if是沒有和then的,不用fi結尾,python判斷字串相等是兩個=
shell的if則需要和then,必須fi結尾,判斷字串是乙個=
#!/bin/bash
#定義伺服器位址
server=("localhost" "localhost" "localhost" "localhost" "localhost" "localhost")
#定義使用者名稱
name=("root" "root" "root" "root" "root" "root")
#定義密碼
passwd=("111111" "111111" "111111" "111111" "111111" "111111")
#定義獲取登入數的sql
login_sql="select count(1) from login_tb"
#定義獲取註冊數的sql
register_sql="select count(1) from reg_tb"
#設定總和的值,起始是0
sum=0
#定義函式exe_func
exe_func() -d $db_name -u $ -p"$" -n -b -e "$login_sql"`
#判斷是不是註冊
elif [ $1 = "register" ];then
#獲取每乙個庫里註冊的資料
now_sum=`/usr/local/mysql/bin/mysql -h $ -d $db_name -u $ -p"$" -n -b -e "$register_sql"`
fi#將和相加
sum=`expr $sum + $now_sum`
#結束迴圈
done
#列印出總數
echo $sum
}#開始判斷
case $1 in
#判斷是不是登入
"login")
#獲取登入的總數
login_sum=`exe_func login`
#列印資訊
echo "登入的總數是: $login_sum";;
#判斷是不是註冊
"register")
#獲取註冊的總數
register_sum=`exe_func register`
#列印資訊
echo "註冊的總數是: $register_sum";;
*)#列印提示資訊
echo "input \"login\" or \"register\"";;
esac
shell指令碼例項
1.批量建立10個系統賬號test01 test10,並隨機設定8位數密碼 bin bash for i in seq w 10 do useradd test i echo random madsum cut c 8 tee a passwd.txt stdin test i done 2.在目錄...
Shell 指令碼例項
指令碼內容如下 bin bash action 定義函式,進行操作指南 action 1 database mysql uroot p 1 en e show databases grep e schema v mkdir p mnt sqldump e database name sql case...
Shell指令碼例項
1.寫乙個指令碼,利用迴圈計算10的階乘 bin sh factorial 1 for a in seq 1 10 dofactorial expr factorial a done echo 10 factorial 注 上面有一行,for a in seq 1 10 其中seq 1 10 即列出...