4

互換性の理由から、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
4

2 に答える 2

10

ケースを使用できます。正規表現は使用しませんが、グロブではそれほど長くはありません

case $compare in
    lp:*|http://*|https://*|svn://*|svn+ssh://*|bzr://*|bzr+ssh://*|git:/*|ssh://*)
        echo "We are compared"
    ;;
esac

余談ですが、特殊なシェル変数や環境変数を上書きする危険性があるため、すべて大文字の変数名を使用しないでください。

于 2012-08-28T18:25:49.207 に答える
5

ダッシュには正規表現の比較機能が組み込まれていませんが、いつでも grep を使用できます。

if echo "$compare" | egrep -q "$compare_to"; then
    ...

(シェルの大文字変数に関する@geirhaのメモを2番目に注意してください。)

于 2012-08-28T18:54:53.187 に答える