bash编程 :循环语句

循环: 将循环体代码执行0、1或多次

进入条件:进入循环的条件

退出条件:循环终止的条件

for循环:

for VARIABLE in LIST; do

循环体

done


示例1:写一个脚本,创建20个用户,并以用户名作为密码赋予用户

#!/bin/bash
#
for user in user{1..10}; do
 if id $user; then
 echo "user is exists."
else
 useradd $user
 echo "Add user $user finished."
fi
done


示例2:写一个脚本,查看某目录下所有文件的类型

cat for1.sh
#!/bin/bash
#
for filename in /var/*; do
 file $filename
done


示例3:写一个脚本,查看用户的主组

#!/bin/bash
#
for user in $(cut -d: -f1 /etc/passwd); do
 echo "$user primary group: $(id -n -g $user)."
done


while循环:

while CONDTION; do

循环体

done

进入条件:当CONDITION为“真”

退出条件:当CONDITION为“假”


示例:写一个脚本,求100以内所有正整数之和

#!/bin/bash
#
declare -i sum=0
declare -i i=1
while [ $i -le 100 ]; do
 let sum+=$i
 let i++
done
echo "Sum: $sum"


示例:写一个脚本,打印99乘法表

#!/bin/bash
#
declare -i i=1
declare -i j=1
while [ $j -le 9 ]; do
while [ $i -le $j ]; do
 echo -e -n "${i}X${j}=$[$i*$j]\t"
 let i++
done
 echo
 let i=1
 let j++
done


unitl循环:

until CONDITION; do

循环体

循环控制变量的修正表达式

done

进入条件:当CONDITION为“假”时

退出条件:当CONDITION为“真”时


示例:写一个脚本,如果文件不存在,则创建文件

#!/bin/bash
#
file=/root/testfile
 until [ -f $file ]; do
 touch $file
 echo "file $file is touch finished"
done


循环控制:

continue [n]:提前结束本轮循环,而直接进入下一轮;

break [n]:提前结束循环;


示例:写一个脚本,求100以内所有偶数之和

#!/bin/bash
#
declare -i sum=0
declare -i i=0
while [ $i -le 100 ]; do
 let i++
if [ $[$i%2] -eq 1 ]; then
 echo "$1 is a odd"
 continue
fi
 let sum+=$i
done
echo "Sum: $sum"


示例:每隔一段时间,查看用户是否登录

#!/bin/bash
#
username=$1
declare -i count=0
while true; do
 if who | grep "^$username" &> /dev/null; then
   echo "$username is logged."
   break
 else
   let count++
   echo "$count : $username is not login"
 fi
   sleep 3
done


while循环的特殊用法:

遍历文件的每一行:

while read VARIABLE; do

循环体

done < /PATH/FROM/SOME_FILE


示例:找出UID为偶数的所有用户,显示其用户名和ID号;

#!/bin/bash
#
while read line; do
userid=$(echo $line | cut -d: -f3)
if [ $[$userid%2] -eq 0 ]; then
 echo $line | cut -d: -f1,3
fi
done < /etc/passwd


for循环的特殊用法:

for ((expr1;expr2;expr3)); do

循环体

done

expr1: 定义控制变量,并初始赋值;

expr2: 循环控制条件;

进入条件:控制条件为“真”

退出条件:控制条件为“假”

expr3: 修正控制变量


示例:求100以内所有正整数之和;

#!/bin/bash
#
declare -i sum=0
 for ((i=1;i<=100;i++)); do
 let sum+=$i
done
echo "Sum: $sum."


你可能感兴趣的:(while,bash,for,until)