关于Linux中循环语句for,while,until用法的详解
for,while,until这些循环结构体在Linux的script中是使用非常多的,所以掌握他们的用法是很必要的,以下是我整理的关于这三个命令的一些用法,希望对需要的人有帮助。
一、for循环
结构一 :
for 变量 in 列表 ; do
循环体
done
结构二:
for ((expr1;expr2;expr3)); do
循环体
done
练习提高:
1、计算1-10的和sum;
结构一:
#!/bin/bash
declare -i sum=0
for i in `seq 1 10`
do
let sum=$sum+$i
done
echo $sum
结构二:
#!/bin/bash
declare -i sum=0
for ((i=0;i<=10;i++))
do
sum+=$i
done
echo $sum
2、计算1-1000的和sum;
#!/bin/bash
declare -i sum=0
for i in {1..1000}
do
sum+=$i
done
echo $sum
3、 写一个脚本:
(1)、设定变量FILE的值为/etc/passwd
(2)、依次向/etc/passwd中的每个用户问好,并显示对方的shell,形如:
Hello, root, your shell: /bin/bash
(3)、统计一共有多少个用户
(4)、只向默认shell为bash的用户问声好
#!/bin/bash
line=`wc -l /etc/passwd | awk '{print $1}'`
for i in `seq 1 $line`
do
echo "Hello, ` head -n $i /etc/passwd |tail -1 | awk -F : '{print $1}'`, your shell: `head -n $i /etc/passwd |tail -1 | awk -F : '{print $7}'` "
done
echo "system have $line user。"
line1=`grep "bash$" /etc/passwd | wc -l`
for i in `seq 1 $line1`
do
echo "Hello, `grep "bash$" /etc/passwd | head -n $i | tail -1 | awk -F: '{print $1}'`"
done
4、写一个脚本:
计算100以内所有能被3整除的正整数的和;
#!/bin/bash
declare -i sum=0
for i in `seq 1 100`
do
if [ $[$i%3] -eq 0 ]
then
sum+=$i
fi
done
echo $sum
~
二、while循环
while循环适用于循环次数未知的场景,要有退出条件。
进入循环:条件满足
退出循环:条件不满足
用法:
while condition ; do
循环体
done
练习提高:
1、计算100以内所有正整数的和sum;
2、 连续转换输入的字符,小写变大写,当输入quit时exit
3、 每5秒钟检测hadoop用户是否登录,并显示登录的时间
三、until循环
until的用法其实是跟while差不多的,只是在条件满足上有所不同。
进入循环:条件不满足
退出循环: 条件满足
用法:
until condition ; do
循环体
done
练习提高:
1、计算100以内所有正整数的和sum;