bash 是否可以修改源自另一个环境变量的环境变量

问题描述 投票:0回答:1

我有一个包含斜杠的变量,我想对其进行修改,使其包含用于转义的双斜杠。

所以,这可以直接在终端中运行:

> echo "$MY_PASSWORD" | sed 's/\\/\\\\/g'
*&SD*S&gdo3\\(*SsdDS

但这不是:

export MODIFIED_PASSWORD=$(echo "$MY_PASSWORD" | sed 's/\\/\\\\/g')
echo $MODIFIED_PASSWORD
*&SD*S&gdo3\(*SsdDS

sed environment-variables escaping zsh variable-declaration
1个回答
0
投票

需要明确的是,问题来自于解释反斜杠转义序列的

echo

#!/bin/zsh

MY_PASSWORD='*&SD*S&gdo3\(*SsdDS'
MODIFIED_PASSWORD_1=${MY_PASSWORD//\\/\\\\}
MODIFIED_PASSWORD_2=$(printf %s "$MY_PASSWORD" | sed 's/\\/\\\\/g')

printf '%s\n' "$MY_PASSWORD" "$MODIFIED_PASSWORD_1" "$MODIFIED_PASSWORD_2"
*&SD*S&gdo3\(*SsdDS
*&SD*S&gdo3\\(*SsdDS
*&SD*S&gdo3\\(*SsdDS
© www.soinside.com 2019 - 2024. All rights reserved.