[解決済み】Bashで正規表現で文字列をマッチさせるには?
2022-04-11 07:41:26
質問
私は、ある関数を含むbashスクリプトを書こうとしています。
.tar
,
.tar.bz2
,
.tar.gz
などのファイルでは、tarに関連するスイッチを入れて解凍します。
私は、ファイル名が何で終わるかをテストする if elif then ステートメントを使用していますが、正規表現のメタキャラクタを使用して一致させることができません。
スクリプトを何度も書き直さずに済むように、コマンドラインで「test」を使用しています。以下のステートメントが機能するはずです。
test sed-4.2.2.tar.bz2 = tar\.bz2$; echo $?
(this returns 1, false)
この問題は簡単なことだと思うし、あらゆるところを探したのですが、どうすればいいのかわかりません。 どうすればいいのか、どなたかご存知ですか?
解決方法を教えてください。
正規表現にマッチさせるために
=~
演算子を使用します。
これを試してみてください。
[[ sed-4.2.2.tar.bz2 =~ tar.bz2$ ]] && echo matched
また、(正規表現ではなく)ワイルドカードを使って
==
演算子を使用します。
[[ sed-4.2.2.tar.bz2 == *tar.bz2 ]] && echo matched
移植性にこだわらないのであれば、以下のような使い方をお勧めします。
[[
の代わりに
[
または
test
の方がより安全で強力です。参照
testと[]と[[]の違いは何ですか?
をご覧ください。
関連
-
[解決済み] 正規表現によるIPv4アドレスの検証
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで通常のファイルが存在しないかどうかを判断する方法を教えてください。
-
[解決済み] Bashで文字列変数を連結する方法
-
[解決済み] Bashで文字列が部分文字列を含むかどうかをチェックする方法
-
[解決済み] Bashスクリプトからプログラムが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] /bb|[^b]{2}/ どのように機能するのですか?[クローズド]
-
[解決済み] 最初のマッチで停止する正規表現
-
[解決済み] DartでRegExを使うには?
-
[解決済み] 浮動小数点数に対する正規表現
-
[解決済み] ColdFusion を使用して XML 文字列から余分なホワイトスペースをすべて削除するにはどうすればよいですか?
-
[解決済み] Regex オプション文字にマッチさせる方法
-
[解決済み] RegEx: 引用符で囲まれた値を取得する
-
[解決済み] 正規表現 - 文字列で始まり、文字列で終わる
-
[解決済み] 01-12]レンジが期待通りに動作しないのはなぜですか?
-
[解決済み] 正規表現全体を否定するには?