Regex 如何在破折号中比较字符串?
出于兼容性原因,我将bash脚本移动到dash。以下比较是否有POSIX/Dash替代方案Regex 如何在破折号中比较字符串?,regex,bash,dash-shell,Regex,Bash,Dash Shell,出于兼容性原因,我将bash脚本移动到dash。以下比较是否有POSIX/Dash替代方案 COMPARE_TO="^(lp:~?|https?://|svn://|svn\+ssh://|bzr://|bzr\+ssh://|git://|ssh://)" if [[ $COMPARE =~ $COMPARE_TO ]]; then echo "WE ARE COMPARED!" fi 你可以用一个箱子。它不使用正则表达式,但在globs中也没有那么长 case $compare
COMPARE_TO="^(lp:~?|https?://|svn://|svn\+ssh://|bzr://|bzr\+ssh://|git://|ssh://)"
if [[ $COMPARE =~ $COMPARE_TO ]]; then
echo "WE ARE COMPARED!"
fi
你可以用一个箱子。它不使用正则表达式,但在globs中也没有那么长
case $compare in
lp:*|http://*|https://*|svn://*|svn+ssh://*|bzr://*|bzr+ssh://*|git:/*|ssh://*)
echo "We are compared"
;;
esac
另一方面,您应该避免覆盖特殊的shell变量或环境变量。dash没有内置regex比较,但您始终可以使用grep:
if echo "$compare" | egrep -q "$compare_to"; then
...
(注意,我支持@geirha关于shell中大写变量的注释。)
echo
在这种情况下总是有点可怕。<代码>案例答案更习惯和优雅,完全解决了这个问题,没有外部过程。@ TrPielee:我认为printf“%s\n”“$compare”
。