前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >shell脚本小技巧—001

shell脚本小技巧—001

作者头像
dogfei
发布2020-07-31 14:07:14
3180
发布2020-07-31 14:07:14
举报
文章被收录于专栏:devops探索

子shell的使用

在子shell中执行命令时,不会对当前的shell有任何影响,所有在子shell中执行的命令仅限于子shell内,例如:

代码语言:javascript
复制
cat test.sh

#!/bin/bash
cd /data
pwd
(
cd /usr/local/
ls -l
pwd
)
pwd

执行后的结果可能跟我们固有的想法大不一致

可以看到我们加上()后,就仿佛括号里的所有操作都与整个shell本身都没关系了,其实是开了一个子shell,所有的操作都是在子进程中执行。

下面再看一个while循环的例子

代码语言:javascript
复制
#!/bin/bash
test1() {
num=1
while :
do
        if [ $num -lt 5000000 ];then
                let num+=1
        else
                echo over.
                return
        fi
done
}

test2() {
num=1
while true
do
        if [ $num -lt 5000000 ];then
                let num+=1
        else
                echo over.
                return
        fi
done
}

使用while  :  时

使用while true 时

可以看到test1 函数执行速度是快于test2的,这是因为true是作为/bin中的一个二进制文件夹来实现的,在while循环中,每执行一次,shell就会生成一个进程,而 : 则是shell内建的命令,它总是返回一个0的退出码

再看实用点的命令

代码语言:javascript
复制
cat test.sh

#!/bin/bash
repeat() { while :;do $@ && return; sleep 3;done }
$1 $@

执行结果如下

大概每隔几秒就会去访问一次,直到下载成功。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-07-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 子shell的使用
  • 下面再看一个while循环的例子
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档