Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 在echo中转义特殊字符_String_Unix_Text_Echo - Fatal编程技术网

String 在echo中转义特殊字符

String 在echo中转义特殊字符,string,unix,text,echo,String,Unix,Text,Echo,显示特殊字符列表。是否有echo的参数/选项,我可以将echo之后的所有内容都视为字符串 在python中,我可以使用“…”或“…” 我可以在unix的echo中使用'执行相同的操作,但不能使用',为什么会这样? $ echo #"`\|^!@#@%$#$^%$&%^*()?/\;:$#$@$?$$$!&& $ echo '''#"`\|^!@#@%$#$^%$&%^*()?/\;:$#$@$?$$$!&&''' #"`\|^!@#@%$#$^%

显示特殊字符列表。是否有echo的参数/选项,我可以将echo之后的所有内容都视为字符串

在python中,我可以使用
“…”
“…”

我可以在unix的echo中使用
'
执行相同的操作,但不能使用
'
,为什么会这样?

$ echo #"`\|^!@#@%$#$^%$&%^*()?/\;:$#$@$?$$$!&&

$ echo '''#"`\|^!@#@%$#$^%$&%^*()?/\;:$#$@$?$$$!&&'''
#"`\|^!@#@%$#$^%$&%^*()?/\;:$#$@$?$$$!&&

$ echo """'''#"`\|^!@#@%$#$^%$&%^*()?/\;:$#$@$?$$$!&&"""
bash: !@#@%$#$^%$: event not found
#"`\|^!@#@%$#$^%'''$&%^*()?/\;:$#$"""@$?$$$!&&
如果我有这样的字符串会发生什么?

$ echo #"`\|^!@#@%$#$^%$&%^*()?/\;:$#$@$?$$$!&&

$ echo '''#"`\|^!@#@%$#$^%$&%^*()?/\;:$#$@$?$$$!&&'''
#"`\|^!@#@%$#$^%$&%^*()?/\;:$#$@$?$$$!&&

$ echo """'''#"`\|^!@#@%$#$^%$&%^*()?/\;:$#$@$?$$$!&&"""
bash: !@#@%$#$^%$: event not found
#"`\|^!@#@%$#$^%'''$&%^*()?/\;:$#$"""@$?$$$!&&
我应该如何回显这样的字符串?(以下命令不起作用)


这是因为shell在字符串中应用了所有扩展规则,双引号
<代码>$或
是特殊的Unix字符,用于表示变量或事件,因此会出现错误。

我认为这是因为您的shell(bash)导致的。 这不适用于单引号。 有关详细信息,请查看


对于
echo
命令,有
-e
选项,可用于解释反斜杠转义,这可能会有所帮助。

使用
printf

$ printf "%s\n" $'#"`\|^!@#@%$#$^%$&%^*()?/\;:$#$@$?$$$!&&'
#"`\|^!@#@%$#$^%$&%^*()?/\;:$#$@$?$$$!&&
$ printf "%s\n" $'#"`\|^!@#@%$#$^%\'\'\'$&%^*()?/\;:$#$"""@$?$$$!&&'
#"`\|^!@#@%$#$^%'''$&%^*()?/\;:$#$"""@$?$$$!&&
您可能会注意到单引号
需要转义

要将输出分配给变量,请执行以下操作:

$ foo=$(printf "%s\n" $'#"`\|^!@#@%$#$^%\'\'\'$&%^*()?/\;:$#$"""@$?$$$!&&')
$ echo $foo
#"`\|^!@#@%$#$^%'''$&%^*()?/\;:$#$"""@$?$$$!&&