二重括弧を使用せずに正規表現の一致をテストできますか?

二重括弧を使用せずに正規表現の一致をテストできますか?

私が理解している限り(自由に修正してください。私はシェルスクリプトが初めてです)、角括弧は[Unixコマンドであり、条件をtestテストできるコマンドの代わりです(0条件がtrueの場合はtrue返し1、それ以外の場合は返します)。

二重括弧は、[[より複雑な条件付き評価を実行できるキーワードです。たとえば、正規表現をテストします。

私が正しく理解した場合、二重括弧は[[スクリプトを実行しているシェルによって移植性の問題があるかもしれません(たとえば、Bourneシェルはそれをサポートしていません)。

だから質問です。正規表現の変数をテストしたい場合は、コマンドtest(または単一の角かっこコマンド)を使用して[実行できる方法はありますか?

答え1

伝統的にtest [別の名前を使用していました(ハードリンク)。一つ[プログラムは、後ろに];が必要であることを除いて、どちらの場合もまったく同じことを行います。今日では]このプログラムや組み込みプログラムは正規表現を実行しません。

正規表現をテストするPOSIX(および従来の)方法はです。最初の方法は、と非常に似たexpr grep sed awk正規表現を含む操作を実行します。 2番目のコアは正規表現のみを実行しますが、関連するオプションがたくさんあります。最後の2人は多くのことをしましたtest/[[[含むただし、これが必要な場合にのみこれを実行できます。もう一つの一般的ながPOSIXではないアプローチはperl

関連情報