出于兼容性原因,我正在移动一个bash脚本。是否有POSIX / Dash替代以下比较?
COMPARE_TO="^(lp:~?|https?://|svn://|svn\+ssh://|bzr://|bzr\+ssh://|git://|ssh://)"
if [[ $COMPARE =~ $COMPARE_TO ]]; then
echo "WE ARE COMPARED!"
fi
答案 0 :(得分:8)
您可以使用案例。它不使用正则表达式,但使用globs
的时间并不长case $compare in
lp:*|http://*|https://*|svn://*|svn+ssh://*|bzr://*|bzr+ssh://*|git:/*|ssh://*)
echo "We are compared"
;;
esac
另外,您应avoid using all uppercase variable names,因为您有可能覆盖特殊的shell变量或环境变量。
答案 1 :(得分:4)
dash没有内置的正则表达式比较,但你总是可以使用grep:
if echo "$compare" | egrep -q "$compare_to"; then
...
(请注意,我在@ geirha关于shell中的大写变量的第二个注释。)