gpt4 book ai didi

bash - 让 printf 打印转义的反斜杠

转载 作者:行者123 更新时间:2023-12-05 03:09:06 25 4
gpt4 key购买 nike

因为我需要能够打印可能以 echo 视为选项的内容开头的行,所以我设计了一个 shell 函数,它使用 printf 来打印到终端。如果我需要打印换行符或制表符,我了解到我必须使用 %b 而不是 %s 因为 printf "%s""\n" 会将文字 \n 打印到屏幕上。函数定义如下:

my_echo () {
printf "%b" "${1}"
}

就在最近,我发现尝试打印转义转义序列比通常情况下更复杂。命令 printf "%b""\\n" 将打印一个换行符。要打印换行符的文字,我必须使用 printf "%b""\\\n",但使用它需要重新编码我的所有其他函数和脚本来处理它。有什么方法可以让 printf "%b""\\n" 或任何作为转义转义序列出现的东西吗?

最佳答案

答案:文字

引用类型很重要。如果您不希望反斜杠在到达您的函数之前被解释,请将它们放在单引号字符串中:

printf '%b' '\\n'

...根据您的要求打印一个反斜杠后跟一个 n,没有尾随换行符。


答案:最佳实践

将转义序列保留在格式字符串中,并保留在数据之外。因此:

my_echo() { printf '%s\n' "$*"; }
my_echo_n() { printf '%s' "$*"; }

实际上更接近标准的 echo 行为:只打印一个换行符可以通过不带参数调用 my_echo 来完成;也可以通过传递该文字来打印文字:my_echo_n $'\n' 将打印文字换行符,不涉及任何 %b .

类似地,要包含文字标签:

my_echo $'hello\tworld'

my_echo "hello"$'\t'"world"

关于bash - 让 printf 打印转义的反斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43814515/

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