You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何为字符串中的$添加单个转义符并保存到变量

问题:Python生成单反斜杠转义$的字符串用于Bash命令

问题描述

在Python中打印带转义$的字符串很简单:

>>> char='$'
>>> print(f'\{char}')
\$

但将其存入变量后,Python交互环境显示为'\\$',用户需要的是能让Bash识别的1234\$5678格式(对应Python变量实际存储单个反斜杠+ $),用于构造如下命令:

command=f"echo {password} | sudo passwd monitoringuser --stdin"
ssh.execute_command(command)

直接使用原密码或手动添加双反斜杠的版本都无法让Bash正确执行。

解决方案

1. 用Bash单引号包裹密码(最简单可靠)

Bash中,单引号内的所有字符会被原样解析,不会处理$等特殊变量。构造命令时直接用单引号包裹密码:

my_pass = '1234$5678'
command = f"echo '{my_pass}' | sudo passwd monitoringuser --stdin"
ssh.execute_command(command)

此时Bash接收到的命令为echo '1234$5678' | sudo passwd monitoringuser --stdin,单引号会保护$不被解析为变量。

2. 用shlex.quote()处理所有特殊字符

如果密码本身包含单引号等其他特殊字符,使用Python标准库shlex的quote()方法,自动完成符合Bash规范的转义:

import shlex

my_pass = '1234$5678'
escaped_pass = shlex.quote(my_pass)
command = f"echo {escaped_pass} | sudo passwd monitoringuser --stdin"
ssh.execute_command(command)

该方法会自动将1234$5678转换为'1234$5678',确保所有特殊字符都被Bash正确识别。

3. 澄清Python中字符串的显示与实际存储

Python交互环境中显示的'\\$'只是转义字符的表示方式,实际变量中存储的是单个反斜杠+ $。可以通过以下方式验证:

s = '\$'
print(s)  # 输出:\$
len(s)    # 返回2,说明仅包含两个字符:\ 和 $

内容的提问来源于stack exchange,提问作者USER_RANDOM_010101NR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 00:42:32