展开 bash 包含 '(' 的环境变量

Expand bash environment variable containing '('

在 windows 10 上使用 msys2 中的 bash,我似乎无法将变量设置为包含括号的 windows 环境变量,即 '(',在 bash 脚本。例如,

p86="$PROGRAMFILES(x86)"

不起作用,它扩展了环境变量 $PROGRAMFILES。我试过用反斜杠转义,即。 "$PROGRAMFILES\(x86\)" 但这不起作用。在 bash 中有解决这个问题的方法吗?还是扩展变量中不允许使用括号?。所有 windows 变量都在进程环境中可用。

通常你会使用${..}来取消引用一个变量,例如:

echo "${a}bc"

将打印变量 $a 然后是文字 bc.

尝试:

p86="${PROGRAMFILES(x86)}"

或者您应该检查 env 的输出以查看变量是否存在:

env | grep PROGRAM

使用Windows命令处理器:

PFX86="$(cmd //c 'echo %ProgramFILES(x86)%')"