java中我们经常用到while循环,那么shell中也有while循环:

while简单循环

直接看demo:

demo1: 求1-10的和

[root@dev-02 software]# cat while1to10.sh 
#!/bin/bash
i=1
while [ $i -le 10 ]
do
    sum=$((sum+i))
    i=$((i+1))
done
echo $sum


[root@dev-02 software]# sh while1to10.sh 
55

问题:
开始的时候 老是报错,我们的写法是

报错:
[root@dev-02 software]# sh while1to10.sh 
while1to10.sh: line 3: while[1 -le 10]: command not found
while1to10.sh: line 4: syntax error near unexpected token `do'
while1to10.sh: line 4: `do'

脚本:
[root@dev-02 software]# cat while1to10.sh 
#!/bin/bash
i=1
while[$i -le 10]
do
    sum=$((sum+i))
    i=$((i+1))
done
echo $sum

之后修改
while的参数之间需要用空格隔开,问题解决,这个语法真6,无语了,苦笑。

while读取文件内容:

读取文件,遍历every line ,有next line ,就echo line

[root@dev-02 software]# cat readwhile.sh 
#!/bin/bash
while read -r line
do
    echo $line
done < /etc/passwd



[root@dev-02 software]# sh readwhile.sh 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
..
.

关于-r 我们看一下帮助文档,可以发现-r是不考虑转义字符。

-r Backslash does not act as an escape character. The backslash is considered to be part of the line. In par-
ticular, a backslash-newline pair may not be used as a line continuation.

GitHub 加速计划 / li / linux-dash
10
2
下载
A beautiful web dashboard for Linux
最近提交(Master分支:1 个月前 )
186a802e added ecosystem file for PM2 5 年前
5def40a3 Add host customization support for the NodeJS version 5 年前
Logo

新一代开源开发者平台 GitCode,通过集成代码托管服务、代码仓库以及可信赖的开源组件库,让开发者可以在云端进行代码托管和开发。旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐