4

チルダ文字はbashスクリプトでエスケープする必要がありますか?

\〜でエスケープしようとしましたが、役に立ちません。〜文字を削除すると、以下のコードは期待どおりに機能します。

            if ! [[ "$line" =~ ^[0-9a-zA-Z-~]+$ ]]; then
                    echo "skipping .. $line"
                    continue
            fi

上記の式にチルダ文字を追加するにはどうすればよいですか?

4

1 に答える 1

8

-の後に〜を入れないでください。正規表現を次のように変更します。

if ! [[ "$line" =~ ^[0-9a-zA-Z~-]+$ ]]; then

そして、あなたは大丈夫でしょう。

ハイフンがクラスの最後の要素である理由の詳細については、この投稿を参照してください。

于 2013-03-25T22:44:18.413 に答える