bash regex with quotes?
2023-09-26 05:52:13
質問
次のコード
number=1
if [[ $number =~ [0-9] ]]
then
echo matched
fi
は動作します。しかし、正規表現で引用符を使おうとすると、止まってしまいます。
number=1
if [[ $number =~ "[0-9]" ]]
then
echo matched
fi
試しに
"\[0-9\]"
も試しました。何が足りないのでしょうか?
面白いことに bash アドバンスドスクリプティングガイド はこれがうまくいくことを示唆しています。
Bash バージョン 3.2.39.
どのように解決するのですか?
変更されたのは は、3.1 と 3.2 の間で . アドバンスドガイドの更新が必要なのでしょう。
これは bash-3.1 のリリース以降に bash-3.2 に追加された新機能の簡潔な説明です。 のリリース以降に追加された新機能の簡潔な説明です。 いつものように マニュアルページ (doc/bash.1) を参照してください。 をご覧ください。
- Bash の新機能
スニップ
f. の文字列引数を引用するようになりました。 [コマンドの =~ 演算子に文字列の引数を引用するようになりました。 他のパターンマッチング演算子と同様に、文字列マッチングを強制します。
パターンを変数に格納し、正規表現を直接使用する代わりにそれを使用する洞察力がない限り、悲しいことに、これはスクリプトを使用して既存の引用を壊します。以下の例です。
$ bash --version
GNU bash, version 3.2.39(1)-release (i486-pc-linux-gnu)
Copyright (C) 2007 Free Software Foundation, Inc.
$ number=2
$ if [[ $number =~ "[0-9]" ]]; then echo match; fi
$ if [[ $number =~ [0-9] ]]; then echo match; fi
match
$ re="[0-9]"
$ if [[ $number =~ $re ]]; then echo MATCH; fi
MATCH
$ bash --version
GNU bash, version 3.00.0(1)-release (i586-suse-linux)
Copyright (C) 2004 Free Software Foundation, Inc.
$ number=2
$ if [[ $number =~ "[0-9]" ]]; then echo match; fi
match
$ if [[ "$number" =~ [0-9] ]]; then echo match; fi
match
関連
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで通常のファイルが存在しないかどうかを判断する方法を教えてください。
-
[解決済み] Bashで文字列変数を連結する方法
-
[解決済み] Bashで文字列が部分文字列を含むかどうかをチェックする方法
-
[解決済み] Bash prints リテラルの改行をエコーする \n
-
[解決済み] Bashスクリプトからプログラムが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで文字列をデリミターで分割するには?
-
[解決済み] Bashでコマンドライン引数を解析するには?
-
[解決済み】Bashでファイル名と拡張子を抽出する。
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Vimで正規表現に置換すると、`E488: Trailing characters`が発生します。
-
[解決済み] Regex Last occurrence?
-
[解決済み] Atomで改行文字を置き換えるには?
-
[解決済み] GNU sed の lookahead 正規表現がおかしいのですが?
-
[解決済み] 2回目以降で一致する
-
[解決済み] 標準的な10桁の電話番号にマッチする正規表現
-
[解決済み] sedで行全体を置き換えるには?
-
[解決済み] grepで星座を使う
-
[解決済み] 正規表現で複数行にまたがる任意の文字にマッチさせるにはどうしたらよいですか?
-
[解決済み] 正規表現におけるバックスラッシュの後の数値の意味は?