gpt4 book ai didi

庆典 printf : How do I output\x and\f within double quotes?

转载 作者:行者123 更新时间:2023-12-01 22:18:14 24 4
gpt4 key购买 nike

我正在尝试 printf 一个带有变量的输入并且需要双引号。我的输出需要一个\x 和\f 文本输出。

printf "\x"

printf "\\x"

产生错误:

./pegrep.in: line 94: printf: missing hex digit for \x

同时

printf "\f"

printf "\\f"

什么都不产生(在文本输出中我相信它会产生 ^L)

但是单引号适用于 x(但不适用于 f)。我试着封闭

printf "...'\\x'..."

并得到与标准双引号相同的错误。也尝试过///无济于事。

最佳答案

首先,让我们了解引用的工作原理。

最简单的引用形式是反斜杠:它防止后面的字符以任何特殊方式被解释,允许它被用作文字字符。例如:

# Two arguments to printf
$ printf '%s\n' a b
a
b
# One three-character argument to printf
printf '%s\n' a\ b
a b

双引号相当于转义其中包含的每一个字符:"a b c"相当于\a\\b\\c,与相同>a\b\c 因为 abc 开头没有特殊含义。您可以将双引号内的每个字符视为按字面处理,但以下情况除外:

  1. $ 可以启动参数扩展或命令替换。用反斜杠将其转义以按字面意思对待它。

     $ foo=3
    $ echo "$foo"
    3
    $ echo "\$foo"
    $foo
  2. 反引号开始命令替换。用反斜杠将其转义以按字面意思对待它。

    $ echo "`pwd`"
    /home/me
    $ echo "\`pwd\`"
    `pwd`
  3. 双引号结束带引号的字符串。用反斜杠将其转义以按字面意思对待它。

    $ echo "\""
    "
  4. 因为反斜杠可能是前面三个序列之一的一部分,所以用反斜杠转义以按字面意思对待一个。

    $ echo "\\"
    \

引号内,所有内容都按字面意思处理,包括反斜杠的任何使用。 (这样做的一个结果是不可能将单引号放在单引号字符串中,因为它总是会终止这样的字符串。)

$ echo '\'
\

一旦理解了引用,接下来您需要意识到 printf 自身 可以处理它在第一个参数中看到的任何反斜杠。

$ printf 'a\x20b\n'  # a, space (ASCII 0x20), b, newline
a b

为了确保无论出现什么字符都按字面打印字符串,请使用%s 格式说明符并将您的字符串作为第二个参数传递:

$ printf '\x41\n'
A
$ printf '%s\n' '\x41'
\x41

关于庆典 printf : How do I output\x and\f within double quotes?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42347268/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com