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

老男孩shell运维实战例题说明

发布时间:2020-12-15 09:21:27 所属栏目:安全 来源:网络整理
导读:老男孩shell运维实战例题说明 背景知识:双中括号[[]] ①[[是 bash 程序语言的关键字。并不是一个命令,[[ ]] 结构比[ ]结构更加通用。在[[和]]之间所有的字符都不会发生文件名扩展或者单词分割,但是会发生参数扩展和命令替换。 ②支持字符串的模式匹配,使

老男孩shell运维实战例题说明


背景知识:双中括号[[]]

①[[是 bash 程序语言的关键字。并不是一个命令,[[ ]] 结构比[ ]结构更加通用。在[[和]]之间所有的字符都不会发生文件名扩展或者单词分割,但是会发生参数扩展和命令替换。

②支持字符串的模式匹配,使用=~操作符时甚至支持shell的正则表达式。字符串比较时可以把右边的作为一个模式,而不仅仅是一个字符串,比如[[ hello == hell? ]],结果为真。[[ ]] 中匹配字符串或通配符,不需要引号。

③使用[[ ... ]]条件判断结构,而不是[ ... ],能够防止脚本中的许多逻辑错误。比如,&&、||、<和> 操作符能够正常存在于[[ ]]条件判断结构中,但是如果出现在[ ]结构中的话,会报错。比如可以直接使用if [[ $a != 1 && $a != 2 ]],如果不适用双括号,则为if [ $a -ne 1] && [ $a != 2 ]或者if [ $a -ne 1 -a $a != 2 ]。

④bash把双中括号中的表达式看作一个单独的元素,并返回一个退出状态码。
例子:

在CODE上查看代码片

派生到我的代码片

  1. if($i<5)
    if[$i-lt5]
    if[$a-ne1-a$a!=2]
    if[$a-ne1]&&[$a!=2]
    if[[$a!=1&&$a!=2]]
    
    foriin$(seq04);doecho$i;done
    foriin`seq04`;doecho$i;done
    for((i=0;i<5;i++));doecho$i;done
    foriin{0..4};doecho$i;done

老男孩书中例题如下:

#!/bin/sh
cat<<END
1.panxiaoting
2.gongli
3.fanbingbing
END
read-p"Whichdoyoulike?,Plsinputthenum:"a
["$a"="1"]&&{
echo"Iguess,youlikepanxiaoting"
exit1
}
["$a"="2"]&&{
echo"Iguess,youlikegongli"
exit1
}
["$a"="3"]&&{
echo"Iguess,youlikefangbingbing"
exit1
}
[[!"$a"=~[1-3]]]&&{###支持字符串的模式匹配,使用=~操作符时甚至支持shell的正则表达式
echo"Iguess,youarenotman."
}

说明:

其中[[ ! "$a" =~ [1-3] ]]可以替换成[ "$a" != "1","2","3" ]或[[ "$a" != "1","3" ]]

(编辑:李大同)

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

    推荐文章
      热点阅读