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

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


背景知识:双中括号[[]]正则表达式

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

    ②支持字符串的模式匹配,使用=~操做符时甚至支持shell的正则表达式。字符串比较时能够把右边的做为一个模式,而不单单是一个字符串,好比[[ hello == hell? ]],结果为真。` ` 中匹配字符串或通配符,不须要引号。bash

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

    ④bash把双中括号中的表达式看做一个单独的元素,并返回一个退出状态码。
例子: 
在CODE上查看代码片派生到个人代码片ide

  1. if ($i<5)    
    if [ $i -lt 5 ]    
    if [ $a -ne 1 -a $a != 2 ]    
    if [ $a -ne 1] && [ $a != 2 ]    
    if [[ $a != 1 && $a != 2 ]]    
         
    for i in $(seq 0 4);do echo $i;done    
    for i in `seq 0 4`;do echo $i;done    
    for ((i=0;i<5;i++));do echo $i;done    
    for i in {0..4};do echo $i;done

老男孩书中例题以下:spa

#!/bin/sh
cat <<END
   1.panxiaoting
   2.gongli
   3.fanbingbing
END
read -p "Which do you like?,Pls input the num:" a
[ "$a" = "1" ] && {
    echo "I guess,you like panxiaoting"
    exit 1
}
[ "$a" = "2" ] && {
    echo "I guess,you like gongli"
    exit 1
}
[ "$a" = "3" ] && {
    echo "I guess,you like fangbingbing"
    exit 1
}
[[ ! "$a" =~ [1-3] ]] && {             ###支持字符串的模式匹配,使用=~操做符时甚至支持shell的正则表达式
    echo "I guess,you are not man."
}

说明:.net

其中[[ ! "$a" =~ [1-3] ]]能够替换成[ "$a" != "1","2","3" ]或[[ "$a" != "1","2","3" ]]code

相关文章
相关标签/搜索