• 引用和转义

    引用和转义

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

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

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

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

    • :把空格当作参数的分隔符

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

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

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

    1. # 以下的执行效果都是相同的:
    2. log-format %{+Q}o\ %t\ %s\ %{-Q}r
    3. log-format "%{+Q}o %t %s %{-Q}r"
    4. log-format '%{+Q}o %t %s %{-Q}r'
    5. log-format "%{+Q}o %t"' %s %{-Q}r'
    6. log-format "%{+Q}o %t"' %s'\ %{-Q}r
    7. # 以下的执行效果都是相同的:
    8. reqrep "^([^\ :]*)\ /static/(.*)" \1\ /\2
    9. reqrep "^([^ :]*)\ /static/(.*)" '\1 /\2'
    10. reqrep "^([^ :]*)\ /static/(.*)" "\1 /\2"
    11. reqrep "^([^ :]*)\ /static/(.*)" "\1\ /\2"