Bash

正確轉義引號

  • June 18, 2018

我有以下命令:

python -c 'import crypt; print(crypt.crypt("$Password", crypt.mksalt(crypt.METHOD_SHA512)))'

$Passwordshell變數在哪裡。如何正確地將其擴展為變數,而不是將其視為文字?

不要因為那將是程式碼注入漏洞,並且還要避免在命令的參數中傳遞密碼,因為它們會通過顯示在輸出中ps而變得公開,並且有時會記錄在一些審計日誌中。

使用環境變數通常更好:

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

(這裡使用VAR=value cmd語法而不是export VAR環境變數只傳遞給那個命令呼叫)。

引用自:https://unix.stackexchange.com/questions/450369