日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Linux01-BASH的while流程控制41

發布時間:2025/3/19 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux01-BASH的while流程控制41 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


一、循環流程控制

? ?1、循環:while, until, for

? ?2、break: 提前退出循環

? ? ? ?continue:提前結束本輪循環,而進入下一輪循環;

? ?如:計算100以內奇數的和;

#!/bin/bash

#

declare -i I=0

declare -i SUM=0

while [ $I -lt 100 ];do

? ? ? ?let I++

? ? ? ?if [ $[$I%2] -eq 0 ?];then

? ? ? ? ? ? ? ?continue

? ? ? ?fi

? ? ? ? ? ? ? ?SUM=$SUM+$I

done

? ? ? ?echo $SUM

? ?如:1000以內的正整數相加,當和大于5000時退出循環;

#!/bin/bash

#

declare -i SUM=0

for I in {1..1000};do

? ? ? ?let SUM+=$I

? ? ? ?if [ $SUM -gt 5000 ];then

? ? ? ? ? ? ? ?break

? ? ? ?fi

done

? ? ? ?echo "I is $I."

? ? ? ?echo "SUM is $SUM."

? ?3、while的特殊用法

? ? ? ?a)while的特殊用法一:

? ? ? ? ? ?while :;do

? ? ? ? ? ? ? ?STATEMENT

? ? ? ? ? ?done

? ?如:判斷輸入內容是否為文件,當觸發quit時退出;

#!/bin/bash

#

while :;do

? ? ? ?read -p "File path:" FILEPATH

? ? ? ?[ $FILEPATH == 'quit' ] && break

? ? ? ?if [ -e $FILEPATH ];then

? ? ? ? ? ? ? ?echo "$FILEPATH exists."

? ? ? ?else

? ? ? ? ? ? ? ?echo "No$FILEPATH."

? ? ? ?fi

done

echo "Quit."

? ? ? ?b)while的特殊用法二:

? ? ? ? ? ?while read LINE; do

? ? ? ? ? ? ? ?STATEMENT

? ? ? ? ? ?done < /PATH/TO/SOMEFILE

? ?如:/etc/passwd中用戶shell為bash的顯示用戶的用戶名;只顯示前6個用戶;如果ID小于或等于505的則不顯示用戶;

#!/bin/bash

#

FILE=/etc/passwd

let I=0

while read LINE;do

? ? ? ?[ `echo $LINE | awk -F : '{print $3}'` -le 505 ] && continue

? ? ? ?[ `echo $LINE | awk -F : '{print $7}'` ?== '/bin/bash' ] ?&& echo $LINE | awk -F : '{print $1}' && let I++

? ? ? ?[ $I -eq 6 ] && break

done < $FILE

寫一個腳本:

1、判斷一個指定的bash腳本是否有語法錯誤;如果有錯誤,則提醒用戶鍵入Q或者q無視錯誤并退出,其它任何鍵可以通過vim打開這個指定的腳本;

2、如果用戶通過vim打開編輯后保存退出時仍然,則重復第一步中的內容;否則,就正常關閉退出;

參考答案:

#!/bin/bash

#

until bash -n $1 &> /dev/null;do

? ? ? ?read -p "Syntax Error,[Q|q] to quit,Any input for editing:" CHOICE

? ? ? ?case $CHOICE in

? ? ? ?Q|q)

? ? ? ? ? ? ? ?echo "Something wrong,quiting."

? ? ? ? ? ? ? ?exit 5;;

? ? ? ?*)

? ? ? ? ? ? ? ?vim + $1;;

? ? ? ?esac

done

。

轉載于:https://blog.51cto.com/zkhylt/1410999

總結

以上是生活随笔為你收集整理的Linux01-BASH的while流程控制41的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。