fin*_*oot 19 bash echo escape-characters printf variable
我想用来printf打印一个变量。此变量可能包含%百分号。
最小的例子:
$ TEST="contains % percent"
$ echo "${TEST}"
contains % percent
$ printf "${TEST}\n"
bash: printf: `p': invalid format character
contains $
Run Code Online (Sandbox Code Playgroud)
(echo提供所需的输出。)
pLu*_*umo 37
使用printf以正常形式:
printf '%s\n' "${TEST}"
Run Code Online (Sandbox Code Playgroud)
来自man printf:
Run Code Online (Sandbox Code Playgroud)SYNOPSIS printf FORMAT [ARGUMENT]...
你应该永远不会传递给格式字符串变量,因为它可能会导致错误和安全漏洞。
顺便提一句:
如果您想将%签名作为 FORMAT 的一部分,则需要输入%%,例如:
$ printf '%d%%\n' 100
100%
Run Code Online (Sandbox Code Playgroud)
Ste*_*itt 13
你永远不应该把变量内容放在给定的格式字符串中printf。改用这个:
printf '%s\n' "${TEST}"
Run Code Online (Sandbox Code Playgroud)