青草久久影院-青草久久伊人-青草久久久-青草久久精品亚洲综合专区-SM双性精跪趴灌憋尿调教H-SM脚奴调教丨踩踏贱奴

17站長(zhǎng)網(wǎng)

17站長(zhǎng)網(wǎng) 首頁(yè) 腳本 linux shell 查看內(nèi)容

有關(guān)循環(huán)語(yǔ)句在bash編程中用法的詳細(xì)解析

2022-12-5 09:22| 查看: 2222 |來(lái)源: 互聯(lián)網(wǎng)

下面給大家介紹的有關(guān)循環(huán)語(yǔ)句在bash編程中用法的詳細(xì)解析,你可能還不知道,下面我門一起來(lái)看看,希望對(duì)需要的朋友有所幫助!1.if 是單分支語(yǔ)句,使用格式如下 ...

下面給大家介紹的有關(guān)循環(huán)語(yǔ)句在bash編程中用法的詳細(xì)解析,你可能還不知道,下面我門一起來(lái)看看,希望對(duì)需要的朋友有所幫助!

1.if 是單分支語(yǔ)句,使用格式如下:

if condition ; then
statement
…..
fi
2.if … else 是雙分支語(yǔ)句,使用格式如下:
if condition ; then
statement
….
else
statement
….
fi
3.if …elif…elif…else 是多分支語(yǔ)句,使用格式如下:
if condition ; then
statement
….
elif condition ; then
statement
…..
elif condition ; then
statement
…..
.
.
.
else
statement
….
fi
4.while 語(yǔ)句是循環(huán)語(yǔ)句,當(dāng)條件滿足的情況下才循環(huán),不滿足則退出循環(huán),使用格式如下:
while condition ; do
statement
…..
done
5.until 語(yǔ)句也是循環(huán)語(yǔ)句,當(dāng)條件不滿足的情況下循環(huán),滿足則不循環(huán),使用格式如下:
until condition ; do
statement
…..
done
6.case 也是循環(huán)語(yǔ)句,使用格式如下:
case $var(變量) ; in
value1)
……

value2)
…..

*)

..
..
..
esac

腳本練習(xí):

1.計(jì)算100以內(nèi)所有能被3整除的正整數(shù)的和。

#!/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.計(jì)算100以內(nèi)所有奇數(shù)的和以及所有偶數(shù)的和

#!/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下的文件的類型:
如果是普通文件,則說(shuō)明其為普通文件;
如果是目錄文件,則說(shuō)明其為目錄文件;
如果是符號(hào)鏈接文件,則說(shuō)明其為符號(hào)鏈接文件;
否則,說(shuō)明文件類型無(wú)法識(shí)別;

#!/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.寫(xiě)一個(gè)腳本,分別顯示當(dāng)前系統(tǒng)上所有默認(rèn)shell為bash的用戶和默認(rèn)shell為
/sbin/nologin的用戶
并統(tǒng)計(jì)各類shell下的用戶總數(shù),顯示結(jié)果形如: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.寫(xiě)一個(gè)腳本:
(1)如果不存在,就創(chuàng)建文件/tmp/maintenance;如果存在,就事先刪除
(2)在文件/tmp/maintenance中添加如下內(nèi)容:
172.16.0.6
172.16.0.17
172.16.0.20
(3)測(cè)試172.16.0.0/16網(wǎng)絡(luò)內(nèi)的所有主機(jī)是否在線,如果在線就顯示其在線,如果此主機(jī)
在/tmp/maintenance文件中,就顯示其正處于維護(hù)狀態(tài);否則,就顯示其狀態(tài)未知;

#!/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寫(xiě)一個(gè)腳本,完成以下功能:
(1)、提示用戶輸入一個(gè)用戶名;
(2)、顯示一個(gè)菜單給用戶,形如:
U|u show UID
G|g show GID
S|s show SHELL
Q|q quit
(3)、提醒用戶選擇一個(gè)選項(xiàng),并顯示其所選擇的內(nèi)容;如果用戶給的是一個(gè)非上述所提示的選項(xiàng),則提醒用戶給出的選項(xiàng)錯(cuò)誤,并請(qǐng)其重新選擇后執(zhí)行;
第一種方法:

#!/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寫(xiě)一個(gè)腳本:
(1)、判斷一個(gè)指定的腳本是否是語(yǔ)法錯(cuò)誤;如果有錯(cuò)誤,則提醒用戶鍵入Q或者q無(wú)視錯(cuò)誤并退出,其它任何鍵可以通過(guò)vim打開(kāi)這個(gè)指定的腳本;
(2)、如果用戶通過(guò)vim打開(kāi)編輯后保存退出時(shí)仍然有錯(cuò)誤,則重復(fù)第1步中的內(nèi)容;否則,就正常關(guān)閉退出。
第一種方法

#!/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 寫(xiě)一個(gè)腳本:
查看redhat用戶是否登錄了系統(tǒng),如果登錄了,就通知當(dāng)前腳本執(zhí)行者“redhat
is logged on.”;否則,就睡眠5秒鐘后再次進(jìn)行測(cè)試;直到其登錄為止退出;
第一種方法

#!/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寫(xiě)一個(gè)腳本:
(1)、向系統(tǒng)中添加20個(gè)用戶,名字為linuxer1-linuxer20,密碼分別為其用戶名,要使用while循環(huán);
(2)、要求:在添加每個(gè)用戶之前事先判斷用戶是否存在,如果已經(jīng)存在,則不再添加此用戶;
(3)、添加完成后,顯示linuxer1-linuxer20每個(gè)用戶名及對(duì)應(yīng)的UID號(hào)碼和GID號(hào)碼,形如 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

以上有關(guān)循環(huán)語(yǔ)句在bash編程中用法的詳細(xì)解析就是小編為大家收集整理的全部?jī)?nèi)容了,希望對(duì)大家有所幫助。如果您喜歡這篇文章,可以收藏或分享給您的小伙伴們吧!歡迎持續(xù)關(guān)注我們的后續(xù)更新。

本文最后更新于 2022-12-5 09:22,某些文章具有時(shí)效性,若有錯(cuò)誤或已失效,請(qǐng)?jiān)诰W(wǎng)站留言或聯(lián)系站長(zhǎng):[email protected]
·END·
站長(zhǎng)網(wǎng)微信號(hào):w17tui,關(guān)注站長(zhǎng)、創(chuàng)業(yè)、關(guān)注互聯(lián)網(wǎng)人 - 互聯(lián)網(wǎng)創(chuàng)業(yè)者營(yíng)銷服務(wù)中心

免責(zé)聲明:本站部分文章和圖片均來(lái)自用戶投稿和網(wǎng)絡(luò)收集,旨在傳播知識(shí),文章和圖片版權(quán)歸原作者及原出處所有,僅供學(xué)習(xí)與參考,請(qǐng)勿用于商業(yè)用途,如果損害了您的權(quán)利,請(qǐng)聯(lián)系我們及時(shí)修正或刪除。謝謝!

17站長(zhǎng)網(wǎng)微信二維碼

始終以前瞻性的眼光聚焦站長(zhǎng)、創(chuàng)業(yè)、互聯(lián)網(wǎng)等領(lǐng)域,為您提供最新最全的互聯(lián)網(wǎng)資訊,幫助站長(zhǎng)轉(zhuǎn)型升級(jí),為互聯(lián)網(wǎng)創(chuàng)業(yè)者提供更加優(yōu)質(zhì)的創(chuàng)業(yè)信息和品牌營(yíng)銷服務(wù),與站長(zhǎng)一起進(jìn)步!讓互聯(lián)網(wǎng)創(chuàng)業(yè)者不再孤獨(dú)!

掃一掃,關(guān)注站長(zhǎng)網(wǎng)微信

大家都在看

    熱門排行

      最近更新

        返回頂部
        主站蜘蛛池模板: YY6080A旧里番在线观看 | 久久精品国产在热亚洲 | 中文字幕AV亚洲精品影视 | 老湿影院色情a | SM脚奴调教丨踩踏贱奴 | 亚洲综合小说久久另类区 | 国产精品一区二区在线播放 | 高h全肉图| 男人插曲女人下生免费大全 | 国产白丝精品爽爽久久蜜臀 | 真人裸交有声性动态图 | 国产亚洲视频在线 | 久青草国产在线视频亚瑟影视 | 奇米色偷偷 | 动漫美女人物被黄漫在线看 | 广播电台在线收听 | 羞羞漫画在线播放 | 91麻豆精品一二三区在线 | 4484在线观看视频 | 两性午夜刺激爽爽视频 | 中文字幕一区二区三区在线播放 | 四虎国产一区 | 一本道色综合手机久久 | 97精品国产亚洲AV超碰 | 一区二区三区毛AAAA片特级 | 乱淫67194| 一本色道久久88加勒比—综合 | 国产成人a在一区线观看高清 | 色99久久久久高潮综合影院 | adc我们的永久网址 adc网址在线观看 | 亚洲黄色片免费看 | 我半夜摸妺妺的奶C了她软件 | 伊人狠狠丁香婷婷综合尤物 | 国语自产拍在线视频普通话 | 国产欧美精品一区二区三区-老狼 | 99久久久久精品国产免费麻豆 | 国产成人精品视频 | 强奷漂亮女老板在线播放 | 性色AV乱码一区二区三区视频 | 国产电影无码午夜在线播放 | 91亚洲精品 |