加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Bash的循环结构(for和while)

发布时间:2020-12-15 23:26:43 所属栏目:安全 来源:网络整理
导读:在bash有三中类型的循环结构表达方法:for,while,until。这里介绍常用的两种:for和while。 for bash的for循环表达式和python的for循环表达式风格很像: for var in $(ls) do echo "$var" done 取值列表有很多种表达方式,可以结合各种命令比如 ls,cat,s

在bash有三中类型的循环结构表达方法:for,while,until。这里介绍常用的两种:for和while。

for

bash的for循环表达式和python的for循环表达式风格很像:

for var in $(ls)
do
  echo "$var"done

取值列表有很多种表达方式,可以结合各种命令比如 ls,cat,sed等等

也可以是各种迭代类型,比如:

{1..100..2}: 1到100增量为2

{a..z}: a到z的字母

`seq 1 2 100`: 1到100增量为2

?

while

bash的while循环表达式和bash的if表达式风格类似,循环条件需要用方括号 []:

COUNTER=0
while [ $COUNTER -lt 10]
do
    echo "$COUNTER"
    let COUNTER+=1
done

?

while和重定向联用

输出重定向‘>‘比较好理解,就是将while后面的命令以及循环体中的标准输出重定向,例如

while seq 0 1 10   #注意这里直接写命令就行,不需要``或者[]
do
    echo "ok"
    sleep 1000   #这个循环是个无限循环,加sleep为了查看结果
done>test.tx
$cat test.txt
0
1
2
3
4
5
6
7
8
9
10
ok

注意,这里的重定向不仅打印结构体中的标准输出,而且也打印命令的输出。

?

输入重定向是把文件重定向到while后面的命令中,类似于管道(pipe)

while grep "1"
do
echo "This line contains 1"

done<test.txt

利用刚刚生成的test.txt文件,运行上述脚本的结果为:

可以看出,虽然有两行包含字符“1”,但是结构体里的echo语句只执行了一次,这说明只要while后面的命令有输出,那么就执行结构体一次,所以这和cat | grep也没什么区别了。

?当然也可以输入输出重定向一起使用,比如上面的例子可以改为:

while grep "1"
do
        echo "This line contains 1"
done<test.txt>result.txt

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读