我在使用 bash 模式替换时遇到了一个奇怪的问题。运行以下命令时,我希望得到相同的输出:
% cat test.sh
bash --version
VAR_FOO=masked::required::VALUE
VARIABLE_NAME=${VAR_FOO//(required|masked)::/}
echo $VARIABLE_NAME
% ./test.sh
GNU bash,version 3.2.57(1)-release (x86_64-apple-darwin20)
Copyright (C) 2007 Free Software Foundation,Inc.
masked::required::VALUE
% bash --version
GNU bash,Inc.
% VAR_FOO=masked::required::VALUE
% VARIABLE_NAME=${VAR_FOO//(required|masked)::/}
% echo $VARIABLE_NAME
VALUE
相反,在 .sh 文件中运行命令时,模式替换不起作用。如您所见,它似乎使用相同的 bash 版本。我不知道是什么导致了这个问题。任何帮助将不胜感激!
(为了完整性:在 macOS 11.5 上运行)