Shell脚本攻略:循环语句for

目录

一、理论

1.for循环

2.echo命令

二、实验

1.实验一

2.实验二

3.实验三

4.实验四

5.实验五

6.实验六

7.实验七

8.实验八

9.实验九


一、理论

1.for循环

(1)for循环的常见用法

      ① 带列表的for循环
带列表的for循环用于执行一定次数的循环,其语法结构如下:

for 变量名 in 取值列表

do

  命令序列

done

for VARIABLE in (list)
do
    command
done

for fruit in apple orange banana pear
do
    echo "最爱吃的水果:$fruit"
done
echo "没有其他爱吃"
[root@localhost ~]# sh fruit.sh
最爱吃的水果:apple
最爱吃的水果:orange
最爱吃的水果:banana
最爱吃的水果:pear
没有其他爱吃

也可以将列表的内容换成变量,循环的时候读取变量的值;或者in后面的内容可以是任意命令的标准输出。例如:

sum=0
for VAR in `seq 1 100`
do
    let "sum+=VAR"
done
echo "总和是: $sum"
~                     
[root@localhost ~]# sh sum.sh
总和是: 5050

      ② 不带列表的for循环
不带列表的for循环如下所示:

for VARIABLE in (list)
do
    command
done

使用不带列表的for循环时,需要运行脚本时通过参数的方式给变量传值。例如:

sum=0
for VAR 
do
    let "sum+=VAR"
done
echo "总和是: $sum"
[root@localhost ~]# sh sum.sh 7 8 9
总和是: 24

③ 类C的for循环

shell支持类C的for循环,语法结构如下:

for ((expression1;expression2;expression3))
do 
   command
done
for ((i=1,j=100;i<=10;i++,j--))
do
       echo "i=$i,j=$j"
done
~                                                                                                                
~           
[root@localhost ~]# sh for.sh
i=1,j=100
i=2,j=99
i=3,j=98
i=4,j=97
i=5,j=96
i=6,j=95
i=7,j=94
i=8,j=93
i=9,j=92
i=10,j=91

④  for的无限循环
无限循环又叫死循环,使用类C的for循环,只要保证expression2条件为真即可,会一直运行,直到按下Ctrl+C组合键

for ((i=0;i<1;i+=0))
do
       echo "i=$i"
done
~             
i=0
i=0
i=0
i=0
i=0
i=0
i=0
i=0
i=0
i=0
i=0
^C

(2)for循环原理

for语句需要定义一个变量和取值列表,根据不同的取值执行相同的命令,知道变量值用完。

取值列表里包含多个属性相同的对象,例如:IP地址,通信录等。

2.echo命令

echo用于输出字符串或提取Shell变量的值

格式:echo [参数] [字符串]

表1 常用转义符号及含义

转义符号含义
-n  

表示输出不换行

-E 

   禁止反斜杠转义,与-e参数功能相反

-e  

  输出转义字符,将转义后的内容输出到屏幕上

\b 

   相当于退格键,但前提是“\b”后存在字符;“\b"表示删除前一个字符;”\b\b"表示删除前两个字符

\c  

  不换行输出。后面无字符时相当于 echo -n;"\c"后有字符时,将不被输出

\n 

   换行,但是换行后的新行从“\n”处开始另起一行

\f

     换行,但是换行后的新行的开头位置连接着上一行的行尾

\v  

  与\f相同-E    禁止反斜杠转义,与-e参数功能相反

\t  

   转义后表示插入tab,即横向制表符

\r 

    光标移至行首,但不换行,相当于使用“\r”以后的数字覆盖之前相等长度的字符

| 表示插入“\”本身

(1)echo -n 不换行输出

echo a
echo b
echo c
echo "......"
echo -n a
echo -n b
echo -n c       

[root@localhost ~]# sh test.sh
a
b
c
......
abc[root@localhost ~]# 

(2)echo -e 转义字符; \b退格 不换行输出

删除相应个数的字

[root@localhost ~]# echo -e "abcd"
abcd
[root@localhost ~]# echo -e "abc\bd"
abd
[root@localhost ~]# echo -e "ab\b\bcd"
cd

 (3)echo -e \c 不换行输出

[root@localhost ~]# echo -e "abcd\c"
abcd[root@localhost ~]# 

(4)echo -e \n 换行输出

可在末尾

abcd[root@localhost ~]# echo -e "abcd\n"
abcd

也可以在中间

[root@localhost ~]# echo -e "ab\ncd"
ab
cd

 (5)echo -e \f、\v换行输出

[root@localhost ~]# echo -e "abcd\fnice"
abcd
    nice
[root@localhost ~]# echo -e "abcd\vbeauty"
abcd
    beauty

(6)echo -e \r 光标移至行首不换行

[root@localhost ~]# echo -e "abcd\r123"
123d

二、实验

1.实验一

计算从1到100所有整数的和

(1)脚本截图

(2)运行结果

2.实验二

提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和

(1)脚本截图

(2)运行结果

3.实验三

求从1到100所有整数的偶数和、奇数和

偶数和

(1)脚本截图

(2)运行结果

奇数和

(1)脚本截图

(2)运行结果

4.实验四

用户名存放在users.txt文件中,每行一个,判断文件里的用户是否存在,若该用户存在,输出提示该用户已存在;用户存在但没设密码,则提示用户并让用户设置密码;若该用户不存在,提示用户输入密码,建立用户并设立其密码

(1)脚本截图

(2)运行结果

用户不存在

用户存在密码不存在

5.实验五

检测指定范围主机是否通信,并将通信的主机ip输出到文件host_ip中

(1)脚本截图

(2)运行结果

6.实验六

用户输入密码,脚本判断密码是否正确,正确密码为123456,输入正确提示正确信息,连续输错3次则报警

(1)脚本截图

(2)运行结果

7.实验七

使用循环语句将一个 0到255 之间的十进制数转换成8位数二进制数

减法

(1)脚本截图

(2)运行结果

除基逆序取余

(1)脚本截图

(2)运行结果

8.实验八

某山顶上有一颗香蕉树,一只猴子第一天从树上摘了若干根香蕉,当即就吃了一半,还不过瘾,又多吃了一根。第二天猴子又将剩下的香蕉吃了一半,禁不住诱惑,又多吃了一根香蕉。依此类推,每天都将剩余的香蕉吃一半后再多吃一根。到了第十天,猴子发现只剩一根香蕉了,请问这只猴子在第一天总共摘了多少根香蕉?

(1)脚本截图

(2)运行结果

9.实验九

(1)99乘法表

(2)倒三角 99乘法表

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值