Bash:ファイルパス比較のための正規表現

Bash:ファイルパス比較のための正規表現

入力文字列が許可されたファイルパスと一致していることを確認してから、いくつかの操作しか実行したいと思います。

私はこのようなことをしています

path1="mydir/**"
path2="mydir/testing"

[ [ "$path2" =~ "$path1" ] ] && echo "Matches"

パスが次のような場合

mydir/test/dir
mydir/othertest/dir

これらは通過しなければなりません。

上記の確認の結果、エラーが発生しました。

assets/bin/copymain: line 8: [: too many arguments

ベストアンサー1

唯一の要件が特定の方法で終了または開始するパス/文字列を比較する場合、正規表現は必要ありません。

d1=mydir/test/dir
d2=mydir/othertest/dir
d3=mydir-2/test/dir-2

[[ "$d1" == mydir/* ]] && echo matches
[[ "$d2" == mydir/* ]] && echo matches
[[ "$d3" != mydir/* ]] && echo no-match

[[ "$d1" == */dir ]] && echo matches
[[ "$d2" == */dir ]] && echo matches
[[ "$d3" != */dir ]] && echo no-match

おすすめ記事