在 bash 正则表达式中转义美元符号的正确方法是什么?我正在尝试测试字符串是否以美元符号开头。这是我的代码,其中我在双引号表达式中对美元进行了双重转义:
echo -e "AB1\nAB2\n\$EXTERNAL_REF\nAB3" | while read value;
do
if [[ ! $value =~ "^\\$" ]];
then
echo $value
else
echo "Variable found: $value"
fi
done
这就是我想要的一个盒子,它有:
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
详细的输出显示
+ [[ ! $EXTERNAL_REF =~ ^\$ ]]
+ echo 'Variable found: $EXTERNAL_REF'
但是,在另一个使用
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)
比较展开如下
+ [[ ! $EXTERNAL_REF =~ \^\\\$ ]]
+ echo '$EXTERNAL_REF'
是否有一种标准/更好的方法可以适用于所有实现?
非常感谢