亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Linux Shell > 正文

bash 編程中循環語句用法

2020-07-27 19:27:21
字體:
來源:轉載
供稿:網友
1.if 是單分支語句,使用格式如下:
if condition ; then
statement
…..
fi
2.if … else 是雙分支語句,使用格式如下:
if condition ; then
statement
….
else
statement
….
fi
3.if …elif…elif…else 是多分支語句,使用格式如下:
if condition ; then
statement
….
elif condition ; then
statement
…..
elif condition ; then
statement
…..
.
.
.
else
statement
….
fi
4.while 語句是循環語句,當條件滿足的情況下才循環,不滿足則退出循環,使用格式如下:
while condition ; do
statement
…..
done
5.until 語句也是循環語句,當條件不滿足的情況下循環,滿足則不循環,使用格式如下:
until condition ; do
statement
…..
done
6.case 也是循環語句,使用格式如下:
case $var(變量) ; in
value1)
……

value2)
…..

*)

..
..
..
esac

腳本練習:

1.計算100以內所有能被3整除的正整數的和。
復制代碼 代碼如下:

#!/bin/bash
declare -i sum=0
for I in {1..100}; do
if [ $[$I%3] -eq 0 ]; then
let sum+=$I
fi
done
echo " the sum is :$sum"

2.計算100以內所有奇數的和以及所有偶數的和
復制代碼 代碼如下:

#!/bin/bash
# echo "exercise"
declare -i sum1=0
declare -i sum2=0
for I in {1..100}; do
if [ $[$I%2] -eq 0 ]; then
let sum1+=$I
else
let sum2+=$I
fi
done
echo " the even sum is :$sum1"
echo " the oddnumber sum is :$sum2"

3.判斷/var/log下的文件的類型:
如果是普通文件,則說明其為普通文件;
如果是目錄文件,則說明其為目錄文件;
如果是符號鏈接文件,則說明其為符號鏈接文件;
否則,說明文件類型無法識別;
復制代碼 代碼如下:

#!/bin/bash
file1=/var/log/*
for file in $file1 ; do
if [ -f $file ]; then
echo "$file is common file"
elif [ -d $file ]; then
echo "$file is directory file"
else
echo "$file is unknow"
fi
done

4.寫一個腳本,分別顯示當前系統上所有默認shell為bash的用戶和默認shell為
/sbin/nologin的用戶
并統計各類shell下的用戶總數,顯示結果形如:bash,3user,they
are:root,redhat,gentoo nologn,2user,they are:bin,ftp
復制代碼 代碼如下:

#!/bin/bash
file=/etc/passwd
bsh='/bin/bash'
nobsh='/sbin/nologin'
use=`cat $file | cut -d: -f1`
declare -i d1=0
declare -i d2=0
for I in $use ; do
s=`grep "^$I:" $file | cut -d: -f7`
if [ "$s" = $bsh ] ; then
let d1=$d1+1
muser=$I/,$muser
elif [ "$s" = $nobsh ] ; then
let d2=$d2+1
suser=$I/,$suser
fi
done
echo "BASH,$d1 users ,they are:"
echo $muser
echo
echo "NOLOGIN,$d2 users ,they are:"
echo $suser

5.寫一個腳本:
(1)如果不存在,就創建文件/tmp/maintenance;如果存在,就事先刪除
(2)在文件/tmp/maintenance中添加如下內容:
172.16.0.6
172.16.0.17
172.16.0.20
(3)測試172.16.0.0/16網絡內的所有主機是否在線,如果在線就顯示其在線,如果此主機
在/tmp/maintenance文件中,就顯示其正處于維護狀態;否則,就顯示其狀態未知;
復制代碼 代碼如下:

#!/bin/bash
file=/tmp/maintenace
if [ -e $file ]; then
rm -rf $file &> /dev/null
fi
touch $file
cat >> $file << EOF
172.16.0.6
172.16.0.17
172.16.0.20
EOF
bnet=172.16
for net in {0..254} ; do
for host in {1..254} ; do
if ping -c1 -W1 $bnet.$net.$host &> /dev/null ; then
echo "$bnet.$net.$host is up."
elif grep "$bnet.$net.$host$" $file &> /dev/null ;then
echo "$bnet.$net.$host is under maintenance."
else
echo "$bnet.$net.$host state is unknow."
fi
done
done

6寫一個腳本,完成以下功能:
(1)、提示用戶輸入一個用戶名;
(2)、顯示一個菜單給用戶,形如:
U|u show UID
G|g show GID
S|s show SHELL
Q|q quit
(3)、提醒用戶選擇一個選項,并顯示其所選擇的內容;如果用戶給的是一個非上述所提示的選項,則提醒用戶給出的選項錯誤,并請其重新選擇后執行;
第一種方法:
復制代碼 代碼如下:

#!/bin/bash
read -p "Enter a user name:" username
! id $username &> /dev/null && echo " Come on ,the user you input unexit" && exit 9
cat << EOF
U|u show UID
G|g show GID
S|s show SHELL
Q|q quit
EOF
read -p "Enter your choice:" op
case $op in
U|u)
id -u $username;;
G|g)
id -g $username;;
S|s)
grep "^$username/>" /etc/passwd | cut -d: -f7;;
Q|q)
exit 8 ;;
*)
echo "input option wrong ,quit"
exit 9

esac

第二種方法:
復制代碼 代碼如下:

#!/bin/bash
read -p "Enter a user name:" username
! id $username &> /dev/null && echo "Come on ,you input user notexit" && exit 9
cat << EOF
U|u show UID
G|g show GID
S|s show SHELL
Q|q quit
EOF
read -p "Enter your option:" op
while true; do
case $op in
U|u)
id -u $username
break

G|g)
id -g $username
break

S|s)
grep "^$username/>" /etc/passwd | cut -d: -f7
break

Q|q)
exit 7 ;;
*)
read -p "Wrong option,Enter a right option:" op ;;
esac
done

7寫一個腳本:
(1)、判斷一個指定的腳本是否是語法錯誤;如果有錯誤,則提醒用戶鍵入Q或者q無視錯誤并退出,其它任何鍵可以通過vim打開這個指定的腳本;
(2)、如果用戶通過vim打開編輯后保存退出時仍然有錯誤,則重復第1步中的內容;否則,就正常關閉退出。
第一種方法
復制代碼 代碼如下:

#!/bin/bash
[ ! -f $1 ] && echo "wrong path." && exit 2
until bash -n $1 &> /dev/null ; do
read -p " Q|q to quit .others to edit:" opt
case $opt in
Q|q)
echo "quit..."
exit 3

*)
vim $1

esac
done

第二種方法:
復制代碼 代碼如下:

#!/bin/bash
[ ! -f $1 ] && echo "wrong path." && echo "Quit!" && exit 9
until bash -n $1 &> /dev/null ; do
read -p " Grammar wrong please enter Q|q to quit .others to edit:" opt
case $opt in
Q|q)
echo "quit..."
exit 3

*)
vim $1
bash -n $1 &> /dev/null
val=$?
[ "$val" -ne 0 ] && echo "xiu gai bu cheng gong. "

esac
done

第三種方法
復制代碼 代碼如下:

#!/bin/bash
[ ! -f $1 ] && echo "Wrong scripts." && exit 4
bash -n $1 &> /dev/null
valu=$?
until [ $valu -eq 0 ] ; do
read -p "Q|q to quit ,others to edit:" op
case $op in
Q|q)
echo "Quit."
exit 9

*)
vim $1
bash -n $1 &> /dev/null
valu=$?

esac
done

8 寫一個腳本:
查看redhat用戶是否登錄了系統,如果登錄了,就通知當前腳本執行者“redhat
is logged on.”;否則,就睡眠5秒鐘后再次進行測試;直到其登錄為止退出;
第一種方法
復制代碼 代碼如下:

#!/bin/bash
who | grep "^redhat/>" &> /dev/null
reval=$?
until [ $reval -eq 0 ] ;do
sleep 5
who | grep "^redhat/>" &> /dev/null
reval=$?
done
echo "redhat is logged on."

第二種方法:
復制代碼 代碼如下:

#!/bin/bash
until who | grep "^redhat/>" &> /dev/null ; do
sleep 5
done
echo "redhat is logged on"

9寫一個腳本:
(1)、向系統中添加20個用戶,名字為linuxer1-linuxer20,密碼分別為其用戶名,要使用while循環;
(2)、要求:在添加每個用戶之前事先判斷用戶是否存在,如果已經存在,則不再添加此用戶;
(3)、添加完成后,顯示linuxer1-linuxer20每個用戶名及對應的UID號碼和GID號碼,形如 stu1, UID: 1000, GID: 1000
復制代碼 代碼如下:

#!/bin/bash
declare -i I=1
while [ $I -le 20 ] ; do
l=linuxer$I
let I++
! id $l &> /dev/null && useradd $l &> /dev/null && echo "the user:$l" | passwd --stdin $l &> /dev/null && echo "a dd user $l successfully" || echo " The user $l is exit. "
d=`id -u $l`
g=`id -g $l`
echo " $l ,UID:$d,GID:$g "
done

本文出自 “知識體系” 博客
上一篇:BASH 學習筆記小結

下一篇:返回列表

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色综合视频一区中文字幕| 亚洲国产日韩一区| 青草热久免费精品视频| 成人亚洲欧美一区二区三区| 亚洲最大av网| 亚洲日韩第一页| 中文字幕精品一区二区精品| 国产成人精品免高潮在线观看| 在线亚洲男人天堂| 久久亚洲综合国产精品99麻豆精品福利| 日韩视频免费观看| 国产香蕉精品视频一区二区三区| 精品国产户外野外| 91精品国产乱码久久久久久久久| 欧美猛少妇色xxxxx| 久久久成人精品视频| 亚洲xxxx18| 国产精品va在线| 国产精品444| 国产香蕉精品视频一区二区三区| 亚洲天堂av女优| 久久久久久久久久国产| 国产精品视频导航| 国产精品久久久久久av福利软件| 国产精品吴梦梦| 久久精品福利视频| 成人免费淫片视频软件| 国产精品入口福利| 久久综合伊人77777尤物| 欧美日韩一区二区免费在线观看| 北条麻妃99精品青青久久| 色婷婷综合久久久久中文字幕1| 国产精品成人国产乱一区| 操91在线视频| 久久久精品一区二区三区| 亚洲国产精品美女| 国产精品视频免费在线观看| 一区二区三区动漫| 欧美精品一区在线播放| 国产精品成人v| 亚洲欧美精品在线| 国内精久久久久久久久久人| 18一19gay欧美视频网站| 亚洲成人激情在线| 中文字幕欧美日韩在线| 97久久精品人搡人人玩| 九色精品美女在线| 日韩中文字幕免费视频| 奇米成人av国产一区二区三区| 国产精品福利无圣光在线一区| 夜夜嗨av色一区二区不卡| 91九色国产在线| 国产性猛交xxxx免费看久久| 欧美丰满老妇厨房牲生活| 97人人爽人人喊人人模波多| 欧美精品久久久久久久免费观看| 亚洲欧洲美洲在线综合| 国产精品欧美日韩久久| 亚洲第一区中文99精品| 欧美国产日韩一区二区在线观看| 欧美日韩成人免费| 亚洲欧洲免费视频| 国产成人精品免高潮在线观看| 久久亚洲春色中文字幕| 欧洲美女7788成人免费视频| 亚洲成人黄色网址| 中文字幕视频一区二区在线有码| 亚洲精品在线视频| 久久久av亚洲男天堂| 成人免费看黄网站| 亚洲欧美中文在线视频| 亚洲色图五月天| 国产+成+人+亚洲欧洲| 日本欧美精品在线| 综合网中文字幕| 国产一区二区三区免费视频| 一区二区欧美亚洲| 姬川优奈aav一区二区| 国产精品视频一区二区三区四| 国产日韩换脸av一区在线观看| 日韩有码在线播放| 伦理中文字幕亚洲| 欧美黑人xxxⅹ高潮交| 久久视频在线观看免费| 91中文字幕在线| 日韩欧美在线一区| 成人高h视频在线| 欧美猛少妇色xxxxx| 欧美激情免费看| 日韩暖暖在线视频| 日韩av一区在线观看| 久久黄色av网站| 欧美中文字幕第一页| 欧美黑人xxxⅹ高潮交| 亚洲国产免费av| 久久综合五月天| 亚洲精品一区在线观看香蕉| 精品久久久久久久久久国产| 国产精品免费小视频| 国模私拍视频一区| 中文字幕国产精品久久| 成人黄色网免费| 国内精品久久久久久久久| 国产做受高潮69| 中文字幕亚洲天堂| 最近2019好看的中文字幕免费| 国产精品永久免费| 国产成人精品综合| 久久综合国产精品台湾中文娱乐网| 国产成人一区三区| 欧美色videos| 91精品国产综合久久香蕉的用户体验| 欧美午夜女人视频在线| 亚洲激情 国产| 国产亚洲精品久久久久动| 久久精品人人做人人爽| 国产99久久精品一区二区 夜夜躁日日躁| 欧美精品videos另类日本| 81精品国产乱码久久久久久| 久久成人人人人精品欧| 欧美国产欧美亚洲国产日韩mv天天看完整| 日韩精品免费视频| 久久综合九色九九| 亚洲精品一区二区在线| 欧美成人一二三| 欧美日韩日本国产| 一区三区二区视频| 欧美日韩另类视频| 一区二区三区美女xx视频| 激情成人在线视频| 日韩在线免费观看视频| 久色乳综合思思在线视频| 亚洲免费伊人电影在线观看av| 亚洲自拍偷拍在线| 夜色77av精品影院| 清纯唯美亚洲综合| 国产精品免费观看在线| 91精品国产综合久久男男| 疯狂做受xxxx欧美肥白少妇| 欧美—级高清免费播放| 久久久精品免费视频| 国产成人精品日本亚洲专区61| 国产偷国产偷亚洲清高网站| 欧美在线www| 国产偷国产偷亚洲清高网站| 精品国产区一区二区三区在线观看| 亚洲午夜久久久影院| 成人福利免费观看| 亚洲国产精品人人爽夜夜爽| 国产精品第100页| 日韩亚洲欧美中文高清在线| 亚洲国产精品大全| 国产偷国产偷亚洲清高网站| 欧美第一黄色网| 国产美女精品视频免费观看| 亚洲视频axxx| 亚洲第一av网| 国产精品色午夜在线观看| 久久亚洲综合国产精品99麻豆精品福利| 亚洲人成啪啪网站| 98午夜经典影视| 中文字幕欧美国内| 视频在线观看一区二区| 久久人人爽人人|