getopts腳本設(shè)置方式
# ":u:p:h:P:" 中開(kāi)頭的:是指區(qū)分錯(cuò)誤類型
# u: 變量后 : 指使用時(shí)必須有參數(shù)值
# OPTARG 是指系統(tǒng)內(nèi)置變量
while getopts ":u:p:h:P:" opt
do
case $opt in
u)
user=$OPTARG
echo "用戶名: ${user}" ;;
p)
pwk=$OPTARG
echo "用戶密碼: ${pwk} " ;;
h)
host=$OPTARG
echo "連接主機(jī)IP為: ${host}" ;;
P)
post=$OPTARG
echo "端口號(hào)為: ${post}" ;;
esac
done
if [[ $pwk = "" ]];then
# -s 指靜默輸入, 不會(huì)在命令行顯示輸出內(nèi)容迁霎, -p 指提示信息
read -s -p "請(qǐng)輸入密碼:" pwk
# -e -n 設(shè)置為了識(shí)別 \n
echo -e -n "\n用戶密碼: ${pwk} \n"
fi
# 此處為模擬運(yùn)行的方式,僅打印測(cè)試
echo "mysql -u${user} -P${post} -h${host} -p${pwk}"
直接填充密碼型mysql -uyuanyu -P3306 -h10.10.10.10 -pyuanyu
回車后手動(dòng)輸出
sh data.sh -uyuanyu -h10.10.10.10 -P3306 -p
另外在getopts 中未命中參數(shù)是也有相應(yīng)配置歪沃,這里我省略掉了
while getopts ":u:p:h:P:" opt
do
case $opt in
u)
user=$OPTARG
echo "用戶名: ${user}" ;;
?)
echo "無(wú)效參數(shù)"
# 此處若有無(wú)效參數(shù)盔几,選擇直接退出
# 若想忽略無(wú)效參數(shù)派撕,繼續(xù)運(yùn)行挟炬,則將下面這行注釋掉
exit 0;
esac
done