Reputation: 7702
I'm moving a bash script to dash for compatibility reasons. Is there a POSIX/Dash alternative to the following comparison?
COMPARE_TO="^(lp:~?|https?://|svn://|svn\+ssh://|bzr://|bzr\+ssh://|git://|ssh://)"
if [[ $COMPARE =~ $COMPARE_TO ]]; then
echo "WE ARE COMPARED!"
fi
Upvotes: 5
Views: 5529
Reputation: 125788
dash doesn't have regex comparing built in, but you can always use grep:
if echo "$compare" | egrep -q "$compare_to"; then
...
(Note that I second @geirha's note about uppercase variables in the shell.)
Upvotes: 6
Reputation: 6181
You can use a case. It doesn't use regex, but it's not that much longer with globs
case $compare in
lp:*|http://*|https://*|svn://*|svn+ssh://*|bzr://*|bzr+ssh://*|git:/*|ssh://*)
echo "We are compared"
;;
esac
On a side note, you should avoid using all uppercase variable names as you risk overwriting special shell variables or environment variables.
Upvotes: 10