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

前端之家收集整理的这篇文章主要介绍了老男孩shell运维实战例题说明前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

老男孩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" ]]

猜你在找的Bash相关文章