bash 迴圈寫法

2022-05-18 00:48:14 字數 3151 閱讀 1946

for

依次訪問列表裡的元素。

由空格或回車分隔的串就是列表。

for var in 列表 ; do

done

列表的生成方式

for練習

1,分別求100以內所有偶數之和,所有奇數之和

#!/bin/bash

declare -i sum1=0

declare -i sum2=0

for var in ; do

if [ $[var % 2] -eq 0 ]; then

sum1=$[$sum1+$var]

else

sum2=$[$sum2+$var]

fidone

echo $sum1,$sum2

2,計算當前系統上的所有使用者的id之和

#!/bin/bash

declare -i sum=0

for var in `cat /etc/passwd | cut -d: -f3`; do

sum=$[$sum+$var]

done

echo $sum

3,引數是乙個目錄,計算此目錄下所有文字檔案的行數之和,並有多少文字檔案

#!/bin/bash

declare -i sum=0

declare -i lines=0

#在引數1後面加了/*,也就是取得給定目錄下的所有檔案

for var in $1/*; do

#file命令的返回值,如果是文字檔案,則返回值裡有字串ascii

#如果是可執行檔案,則返回值裡有字串elf

if [[ `file $var` =~ ascii ]]; then

sum=$[$sum+1]

#wc -l得到文字檔案的行數,使用了重定向

lines=$[$lines+$[`wc -l < $var`]]

fidone

echo "ascii lines is: $lines"

echo "acsii file's number is $sum"

emacs 生成for**塊的快捷鍵:c-c c-f

特殊用法:for ((i=0;i<=100;i++)); do

#!/bin/bash

#declare -i sum=0

for ((i=0;i<=100;i++)); do

let sum+=$i

done

echo $sum

while

語法:條件為真則進入迴圈體。

while condition; do

done

例子:求1到100的整數之和。

#!/bin/bash

declare -i sum=0

declare -i i=1

# -le是小於等於

while [ $i -le 100 ]; do

let sum+=$i

let i++

done

echo $sum

emacs 生成while**塊的快捷鍵:c-c c-w

特殊用法:讀取檔案的每一行

while read var; do

done < /path/from/file

例子:找出id號為偶數的使用者,顯示其使用者名稱,id和預設shell

#!/bin/bash

#while read lines ;do

username=`echo $lines | cut -d: -f1`

userid=`echo $lines | cut -d: -f3`

usershell=`echo $lines | cut -d: -f7`

if [ $[$userid % 2] -eq 0 ]; then

echo "userid:$userid,username:$username, shell:$usershell"

fidone < /etc/passwd

until

語法:條件為假則進入迴圈體。

until condition; do

done

例子:求1到100的整數之和。

#!/bin/bash

declare -i sum=0

declare -i i=1

until [ $i -gt 100 ]; do

let sum+=$i

let i++

done

echo $sum

迴圈控制

emacs 生成while**塊的快捷鍵:c-c c-u

練習:分別使用for,while,until實現

1,分別求100以內所以偶數之和,100以內所以奇數之和

2,建立10個使用者,user101~user110,密碼同使用者名稱

3,每隔2秒檢測ys使用者是否登入了,如果發現其登入了,則退出迴圈。

#!/bin/bash

#while [ true ]; do

if `who | grep ays &> /dev/null`; then

break

fisleep 2

done

echo `date +"%f %t"` ays logged on >> /tmp/userlogon.log

檢視/tmp/userlogon.log

Bash迴圈結構

endif endif endif forarginlist do done 有限迴圈,次數取決於 list 元素的個數,內容取決於 list 元素的值 while do done 條件迴圈,當條件為真時,執行一次迴圈 until do done 條件迴圈,當條件為假時,才執行一次迴圈 casear...

for迴圈寫法高階

1 常用寫法 for var i 0 i console.log i console.log arr i 每次都需要讀取一次arr.length,進行判斷 2 for var i 0,len arr.length i console.log i console.log arr i 變數定義完整,不用...

for迴圈寫法總結

for迴圈寫法總結 關於shell中的for迴圈用法很多,感覺很全面,所以就轉過來研究研究,嘿嘿.1 for i 1 i 10 i root fox for i 1 i 3 i do echo i 4 done48 2 在shell中常用的是 for i in seq 10 root fox for...