bash shell学习日记(5)特殊字符(四)之星号与问号

目录

1.星号

  1.1在bash shell脚本中用途

2、问号

  2.1在bash shell脚本中用途

  2.2 通过脚本分析

3、思维导图呈现总结

一、星号

1.1在bash shell脚本中用途

      1)当作文件通配符,含义匹配指定文件下的任意文件名,注意 :*  不能匹配以点开头的文件/目录。 

      2)正则表达式,含义匹配 * 前的字符任意次数,包括0次

     3)乘法(*)或幂(**)运算符 

二、问号

 2.1在bash shell脚本中用途

    1)当作文件名通配符,匹配单个字符。

    2)正则表达式,匹配? 前面字符的1次或2次,通常用来匹配单个字符。

    3)测试操作符

  • 在双圆括号结构表达式中,用来测试一个条件的结果(三元操作符 三个条件if-then-else)

     补充:双元括号结构 ((...))

       a.于let命令很相似,允许算术扩展和赋值

      如下实例:

 

       a=$((5+3))

 

       echo $a

 

       8

       b.在bash中,使用C语言风格变量操作的一种处理机制

       例如:

     (( a= 23)) # 变量赋值,“=”两边允许有空值

     (( a++ )) #后置自加

      (( a-- )) #后置自减

      (( ++a )) #前置自加

       (( --a )) #前置自减 }

     EX:使用三元操作符好处对比      

   (( var0 = var1<98?9:21))     var这个变量如果小于98那就把9赋值给var0,否者就是21

 

   等价于下列脚本

  1 if [ "$var0" -lt 98 ] 2 then
  3   var1=9
  4 else
  5   var1=21
  6 fi

    注意:-lt<=> less then 小于

  • 在参数替换表达式中,用来测试一个变量是否被设置

        什么是参数替代?

        处理或扩展普通的变量

        参数替代方法:$ {} 参数替代 parameter substitution,如果变量未被声明或赋值,那么就输出错误信息(错误信息是可以指定的)。

           实现方法:1)  $ {parameter?err_msg} 判断变量是否声名   2)  $ {parameter:?err_msg}  判断变量是否声名以及是否赋值

      EX:参数替代方法${} 两种实现方法对比

      EX(1)正常进行变量定义赋值

 var1=123  

echo $var1
123

echo ${var1}
123

 

      EX(2)变量未定义

echo ${var2}
                                                                                
echo ${var2?err_msg}  #错误信息指定的是err_msg
-bash: var2: err_msg   

cho ${var2:?err_msg}
-bash: var2: err_msg

     EX (3) 仅定义变量,未赋值

var3=

echo ${var3}
空值

echo ${var3:?ll}
-bash: var3: ll

 

 

2.2 脚本分析

  1 #!/bin/bash
  2 #使用参数替换和错误信息
  3 #例1:检查一些系统环境变量,这是一个预防性保护的好习惯
  4 #   例如:如果$USER没有被设置,系统将无法识别你
  5 : ${HOSTNAME?} ${USER?} ${HOME?} ${MALL}
  6 #向NULL命令传递四个测试
  7 echo
  8 echo "Name of then machine is $HOSTNAME"
  9 echo "You are "$USER""
 10 echo "Your home directory is $HOME"
 11 echo "Your mail INBOX is located in $MALL"
 12 echo 
 13 echo "If you are reading this messags"
 14 echo "critical environmental vatiables have benn set"
 15 echo
 16 echo
 17 #例2:#[variable?] 结构也能检查脚本中变量的设置情况
 18 ThisVariable=Value-of-ThisVariable
 19 : "Variable of ThisVaiable is $ThisVariable"
 20 echo
 21 echo
 22 : ${SF?"SF ha not been set."}
 23 #如果SF没有被设置的话,那么这个脚本会打印一个错误消息,然后退出
 24 #你可以自己指定错误消息
 25 # : ${variablenaem?"ERROR MESSAGE"}
 26 #和上面的测试方法一样于下面的效果相同
 27 #  dummy_variable=${sxz}
 28 #  dummy_variable=${sxz?"sxz has not been set."}
 29 #  echo ${sxz} > /dev/null
 30 #bash的设置值 set -u 可以强制检查变量是否被设置的方法
 31 echo "You will not sess this message,because script already terminated."
 32 
 33 HERE=0
 34 exit $HERE不会在这里面退出
 35 #事实上,这个脚本将会返回值1作为退出状态($echo $?)

分析:默认情况下bash是检查variable是否被使用

例如:

echo $ll

 echo $cc

这个是不报错的

 set -u 打开bash检查variable是否使用

echo $cc

-bash: cc: 为绑定变量

 set +u 关闭

 echo $c

三、以思维导图的方式总结

 

 

posted @ 2022-06-07 11:11  LIU-GC  阅读(502)  评论(0)    收藏  举报