Bash – 在正则表达式中逃避美元的正确方法
发布时间:2020-12-15 21:06:02 所属栏目:安全 来源:网络整理
导读:在bash正则表达式中逃避美元符号的正确方法是什么?我试图测试字符串是否以美元符号开头.这是我的代码,我在双引号表达式中双重逃避美元: echo -e "AB1nAB2n$EXTERNAL_REFnAB3" | while read value;do if [[ ! $value =~ "^$" ]]; then echo $value el
在bash正则表达式中逃避美元符号的正确方法是什么?我试图测试字符串是否以美元符号开头.这是我的代码,我在双引号表达式中双重逃避美元:
echo -e "AB1nAB2n$EXTERNAL_REFnAB3" | 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' 是否有一种标准/更好的方法可以在所有实现中使用? 非常感谢 解决方法
为什么在这里使用正则表达式?一个glob足够了:
#!/bin/bash while read value; do if [[ "$value" != $* ]]; then echo "$value" else echo "Variable found: $value" fi done < <(printf "%sn" "AB1" "AB2" '$EXTERNAL_REF' "AB3") 与shopt -s compat32一起使用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |