Shell脚本:for循环

shell脚本-for循环

  • 一、for循环:
    • 1.格式:
    • 2.实操:
    • 3.类c语言:

一、for循环:

1.格式:

(1)for 已知的循环次数场景

for 变量名 in 【 名称范围 】

do

命令序列(执行内容,若满足循环需要做什么动作)

done 循环结束的标志

(2)死循环:

for ((;;;))

2.实操:

(1)批量添加用户:用户名都放在users里,且密码设置都是123456
for i in $(cat /opt/users.txt)
do
useradd $i
echo 123456 | passwd --stdin $i
done
[root@localhost opt]# sh test3.sh 
useradd:用户“billkin”已存在
更改用户 billkin 的密码 。
passwd:所有的身份验证令牌已经成功更新。
useradd:用户“pp”已存在
更改用户 pp 的密码 。
passwd:所有的身份验证令牌已经成功更新。
useradd:用户“kritt”已存在
更改用户 kritt 的密码 。
passwd:所有的身份验证令牌已经成功更新。
useradd:用户“chanyeol”已存在
更改用户 chanyeol 的密码 。
passwd:所有的身份验证令牌已经成功更新。
useradd:用户“baekhyun”已存在
更改用户 baekhyun 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@test2 ~]# vim test.sh
for i in {1..5}
do
echo "$i"
done
[root@test2 ~]# bash test.sh 
1
2
3
4
5

3.类c语言:

(1)基本格式:

for (( 表达式1 ;表达式2;表达式3 ))

do

执行内容 若满足循环则做什么动作

done for循环结束标志

表达式1:定义变量并赋值

表达式2:决定是否循环

表达式3:决定循环变量如何改变,决定循环什么时候结束

[root@test2 ~]# vim test.sh
for (( i=0;i<=5;i++ ))
do
echo "$i"
done
[root@test2 ~]# sh test.sh 
0
1
2
3
4
5

(2)扩展:

1.用for循环做100以内能被3整除的数:
[root@test2 ~]# vim test2.sh 
for i in {1..20}
do
let q=$i%3
if [ $q -eq 0 ]
then
echo "$i"
else
echo "错误"
fi
done
[root@test2 ~]# sh test2.sh 
错误
错误
3
错误
错误
6
错误
错误
9
错误
错误
12
错误
错误
15
错误
错误
18
错误
错误
2.在指定范围内,计算出所有可以被指定的数字整除,不能整除的输出"错误",并且起始数字要大于结束数字
read -p "请输入起始数字:" start
read -p "请输入结束数字:" end
read -p "请输入整除的数字" num
if [ $start -gt $end ]
then
echo "起始数字不能大于结束数字"
fi  
for(( i=$start;i<=$end;i++ ))
do  
let q=$i%$num 
if [ $q -eq 0 ] 
then
echo "$i"
else
3.用for循环做一个99乘法表:
for (( i=1;i<=9;i++ ))
do
for (( j=1;j<=i;j++ ))
do
let num=$j\*$i
echo -ne "$j" "*" "$i" "=" "$num" "\t"
done
echo ""
done
[root@test2 ~]# sh test3.sh 
1 * 1 = 1  
1 * 2 = 2  2 * 2 = 4  
1 * 3 = 3  2 * 3 = 6  3 * 3 = 9  
1 * 4 = 4  2 * 4 = 8  3 * 4 = 12  4 * 4 = 16  
1 * 5 = 5  2 * 5 = 10  3 * 5 = 15  4 * 5 = 20  5 * 5 = 25  
1 * 6 = 6  2 * 6 = 12  3 * 6 = 18  4 * 6 = 24  5 * 6 = 30  6 * 6 = 36  
1 * 7 = 7  2 * 7 = 14  3 * 7 = 21  4 * 7 = 28  5 * 7 = 35  6 * 7 = 42  7 * 7 = 49  
1 * 8 = 8  2 * 8 = 16  3 * 8 = 24  4 * 8 = 32  5 * 8 = 40  6 * 8 = 48  7 * 8 = 56  8 * 8 = 64  
1 * 9 = 9  2 * 9 = 18  3 * 9 = 27  4 * 9 = 36  5 * 9 = 45  6 * 9 = 54  7 * 9 = 63  8 * 9 = 72  9 * 9 = 81

3.步长求100内偶数和:
Shell脚本:for循环_第1张图片

Shell脚本:for循环_第2张图片

(3)常用转义字符:

选项 作用
-n 表示不换行输出
-e 输出转义字符,将转义后的内容输出到屏幕上
\b 转义后相当于按退格键(backspace),但前提是"\b"后面存在字符
\c \c 不换行输出,在"\c"后面不存在字符的情况下,作用相当于 echo -n
\f 换行,但是换行后的新行的开头位置连接着上一行的行尾
\v 与\f相同
\t 转以后表示插入tab,即横向制表符
\r 光标移至行首,但不换行,相当于使用"\r"以后的字符覆盖"\r"之前同等长度的字符;但是当"\r"后面不存在任何字符时,"\r"前面的字符不会被覆盖

你可能感兴趣的:(bash,linux,云计算,运维,开发语言)