我需要用字符指定密码#
,但它注释了该行。我如何强制它按字面意思阅读?
例如:我需要把PASSWORD=xpto#123
.不加评论的情况下123
答案1
如果说
PASSWORD=xpto#123
是任何类似 Bourne 的 shell(bash、dash、ksh、zsh...)中的代码,#
不会被视为注释。在这些 shell 中,#
仅在 shell 标记的开头引入注释(因此在行的开头或后面的空格或;
, |
, &&
...)。
它将被视为rc
外壳程序或派生程序中的注释字符(这是在形状中进行赋值的其他外壳程序var=value
),但我怀疑您正在使用这些字符。
最有可能的是,您尝试在某些配置文件中使用它,在其中#
引入注释也很常见。
配置文件没有真正的标准,那么如何逃脱该字符(如果以其他方式视为注释)将取决于实际的配置文件。
最好是阅读该配置文件或其所属软件的手册。
转义字符的常见方法包括双引号 ( "..."
)、单引号 ( '...'
) 或字符前面的反斜杠。也可以使用八进制序列² ( \043
) 或十六进制² ( \x23
) 或 Unicode ( \u0023
) 输入字符...对于引号的处理方式也可能有一些变化(反斜杠或其他字符在引号内是否特殊。 ..)。
1 在rc
shell 中,唯一的引用运算符是(并且单引号本身在这些单引号内'...'
表示)。''
在es
shell(源自 Byron Rakitzis 的rc
Unix 克隆)中,您还可以使用\#
,\043
或\x23
。
² 请注意,这些代表字节值,因此 a\x43
只会#
以 ASCII 字符集或兼容字符集对 a 进行编码,这应该是当今使用的绝大多数字符集,唯一的例外是一些仍然使用 EBCDIC 的罕见 IBM 系统。但使用非 ASCII 字符时需要记住这一点。\u0023
另一方面(通过 Unicode)保证是#
字符。
答案2
您还可以使用反斜杠转义 #
PASSWORD=xpto\#123