のパスを選択しようとしています。$PATH
です。それを選ぶために、私は作った行頭文字 "^"と行末 "[]"の正規表現を書くには?
grep -q "[:|^]$TARGET_PATH[$|:]"
しかし、それは動作しません。
[]
では、「^
」という行頭と「$
」という行末がうまくいきません。
解決策を教えてください。
のパスを選択しようとしています。$PATH
です。それを選ぶために、私は作った行頭文字 "^"と行末 "[]"の正規表現を書くには?
grep -q "[:|^]$TARGET_PATH[$|:]"
しかし、それは動作しません。
[]
では、「^
」という行頭と「$
」という行末がうまくいきません。
解決策を教えてください。
あなたは、このチェックはgrep
を必要としない代わりに、[]
(class of characters or character sets)
grep -q -E "(:|^)\$TARGET_PATH($|:)
のalternation with ()
を試すことができます。
[[ $PATH =~ (^|:)"$TARGET_PATH"(:|$) ]] && echo "found" | echo " not found"
正規表現はクールですが、この場合は単純に必要ありません。
検索対象の文字列($PATH
)を区切り文字(:
)にラッピングするだけです。この方法では、検索対象の文字列が$PATH
にある場合は、常に:
文字で囲まれていることがわかります。
文字列:$TARGET_PATH:
(なしregex
)のための通常の検索は、それが$PATH
で存在だ場合はあなたを伝えるのに十分である:
cat ":$PATH:" | grep ":$TARGET_PATH:"
私に与えてくれてありがとう!ああ!溶液。 – mora
それは範囲からの最初の文字でない場合は、 '^は'そのリテラル値を保持します。 '$'は文字の範囲内で特別な意味を持ちません。 '|'と同じです。 – axiac