2014-01-13 15 views
5

PWDに特定のディレクトリ名が含まれているかどうかを調べるには、出力内のどこにでもテストできるはずです。PWDにディレクトリ名が含まれているかどうかを確認する

たとえば、私はpublic/bower_components/name/のような構造パスを持っており、パスはちょうどpublicです。

nameというフォルダの内容がパブリックフォルダに移動し、bower_componentsフォルダが削除されているため、テストしたいと考えています。

[[ "$PWD" =~ somedir ]] && echo "PWD has somedir" 

またはシェルグロブを使用して:あなたはこのためにBASHの正規表現を使用することができます

おかげ

答えて

10

[[ "$PWD" == *somedir* ]] && echo "PWD has somedir" 
+0

'=='は、シェルパターンマッチング式で '='を超えることはありませんが、算術式よりも移植性と明快さが失われます。 5月にも '='にしてください。 – kojiro

+1

'[[' 'はすでに移植性がないので、' == 'とは反対しません。 '[... == ...]'は、 'bash'によって受け入れられますが、別の問題です。 – chepner

+1

ありがとう、この回答は役に立ちました! – zizther

4

あなたはcaseを使用することができます。

case "$PWD" in 
    */somedir/*) …;; 
    *) ;; # default case 
esac 

することはでき0を使用する:

if [[ "$PWD" = */somedir/* ]]; then … 

あなたは正規表現を使用することができます:

if [[ "$PWD" =~ somedir ]]; then … 

をして起動するより多くの方法が、あります!

関連する問題