正确转义引号

Ano*_*ous 3 shell bash python quoting

我有以下命令:

python -c 'import crypt; print(crypt.crypt("$Password", crypt.mksalt(crypt.METHOD_SHA512)))'
Run Code Online (Sandbox Code Playgroud)

$Passwordshell变量在哪里。如何将其正确扩展为变量,而不是将其视为文字?

Sté*_*las 7

不要因为这会是代码注入漏洞,也避免在命令的参数中传递密码,因为它们然后通过显示在 的输出中ps而变得公开,并且它们有时会记录在某些审核日志中。

使用环境变量通常更好:

PASSWORD="$Password" python3 -c 'import os, crypt
print(crypt.crypt(os.getenv("PASSWORD"), crypt.mksalt(crypt.METHOD_SHA512)))'
Run Code Online (Sandbox Code Playgroud)

(此处使用的VAR=value cmd语法与export VARso 环境变量仅传递给该命令调用相反)。