shell指令碼例項

2021-10-06 07:33:51 字數 1628 閱讀 7369

領導有需求,運維來完成。

需求:獲取每個庫里的註冊數登入數,需要執行指令碼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 即列出...