引用和转义

HAProxy 的配置文件也包含了和其他编程语言中类似的引用、转义系统。配置文件支持三种类型:

  • 用反斜杠来转义
  • 用双引号来弱引用
  • 用单引号来强引用

如果要在字符串里加入空格,则需要在空格前加一个反斜杠来转义或引用一个空格。如果要插入一个反斜杠,可以通过两个反斜杠来转义或强引用一个反斜杠。

举例,使用前置的反斜杠来转义字符:

  • \:转义一个空格,表明不是一个普通分隔符
  • \#:转义一个井号,表明不是一行注释
  • \\:转义一个反斜杠
  • \':转义一个单引号,表明不是一个强引用
  • \":转义一个双引号,表明不是一个弱引用

通过两个双引号来表明弱引用,使用弱引用可以防止:

  • :把空格当作参数的分隔符
  • ':把单引号当作强引用
  • #:把井号当作注释标识

使用弱引用时允许插入变量。如果想在双引号括起来的字符串中插入一个“$”符号,则你需要在前面加一个反斜杠来转义(“$”),不过这个做法在双引号外就无效了。

你可以在双引号中进行字符转义,而在单引号括起来的强引用中则不可行,强引用在引用正则表达式时效率很高。

引用和转义会在内存中进行,允许进行级联。

# 以下的执行效果都是相同的:
log-format %{+Q}o\ %t\ %s\ %{-Q}r
log-format "%{+Q}o %t %s %{-Q}r"
log-format '%{+Q}o %t %s %{-Q}r'
log-format "%{+Q}o %t"' %s %{-Q}r'
log-format "%{+Q}o %t"' %s'\ %{-Q}r

# 以下的执行效果都是相同的:
reqrep "^([^\ :]*)\ /static/(.*)"     \1\ /\2
reqrep "^([^ :]*)\ /static/(.*)"     '\1 /\2'
reqrep "^([^ :]*)\ /static/(.*)"     "\1 /\2"
reqrep "^([^ :]*)\ /static/(.*)"     "\1\ /\2"

results matching ""

    No results matching ""