阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      Unix Shell替代

      Shell替代

      什么是替代?

      当它遇到包含一个或多个特殊字符的表达式时 Shell 执行替代。

      以下是一个例子,在这个例子中,变量被其真实值所替代。同时,“\n” 被替换为换行符:

      #!/bin/sh
      
      a=10
      echo -e "Value of a is $a \n"
      

      这会产生以下结果。在这里 -e 选项可以解释反斜杠转义。

      Value of a is 10
      

      下面是没有 -e 选项的结果:

      Value of a is 10\n
      

      这里有以下转义序列可用于 echo 命令:

      EscapeDescription
      \\反斜杠
      \a警报(BEL)
      \b退格键
      \c抑制换行
      \f换页
      \n换行
      \r回车
      \t水平制表符
      \v垂直制表符

      默认情况下,你可以使用 -E 选项来禁用反斜线转义解释。

      你你可以使用 -n 选项来禁用换行的插入。

      命令替换:一种机制,通过它, Shell 执行给定的命令,然后在命令行替代他们的输出。

      语法

      当给出如下命令时命令替换就会被执行:

      command
      

      当执行命令替换确保你使用反引号,而不是单引号字符。

      命令替换一般是用来分配一个命令的输出变量。下面的示例演示命令替换:

      #!/bin/sh
      
      DATE=`date`
      echo "Date is $DATE"
      
      USERS=`who | wc -l`
      echo "Logged in user are $USERS"
      
      UP=`date ; uptime`
      echo "Uptime is $UP"
      

      这会产生以下结果:

      Date is Thu Jul  2 03:59:57 MST 2009
      Logged in user are 1
      Uptime is Thu Jul  2 03:59:57 MST 2009
      03:59:57 up 20 days, 14:03,  1 user,  load avg: 0.13, 0.07, 0.15
      

      变量代换

      变量代换使 Shell 程序员操纵基于状态变量的值。

      下面的表中是所有可能的替换:

      FormDescription
      ${var}替代 var 的值
      ${var:-word}如果 var 为空或者没有赋值,word 替代 varvar 的值不改变。
      ${var:=word}如果 var 为空或者没有赋值, var 赋值为 word 的值。
      ${var:?message}如果 var 为空或者没有赋值,message 被编译为标准错误。这可以检测变量是否被正确赋值。
      ${var:+word}如果 var 被赋值,word 将替代 var。var 的值不改变。

      以下是例子用来说明上述替代的各种状态:

      #!/bin/sh
      
      echo ${var:-"Variable is not set"}
      echo "1 - Value of var is ${var}"
      
      echo ${var:="Variable is not set"}
      echo "2 - Value of var is ${var}"
      
      unset var
      echo ${var:+"This is default value"}
      echo "3 - Value of var is $var"
      
      var="Prefix"
      echo ${var:+"This is default value"}
      echo "4 - Value of var is $var"
      
      echo ${var:?"Print this message"}
      echo "5 - Value of var is ${var}"
      

      这会产生以下结果:

      Variable is not set
      1 - Value of var is
      Variable is not set
      2 - Value of var is Variable is not set
      
      3 - Value of var is
      This is default value
      4 - Value of var is Prefix
      Prefix
      5 - Value of var is Prefix
      
      目录
      目录