Bashの複数文字列の比較

Bashの複数文字列の比較
    ROOTPATH="/path/here"
    p1 = "file1"
    p2 = "file2"

    for file in `find $ROOTPATH type f`; do
    if [["$file" =~ $p1]]; then
      echo 'got p1'
    elif [["$file" =~ $p2]]; then
      echo 'got p1'
    else

    echo 'got nothing'

失敗する理由を知りません。と$p1両方とも$p2文字列で、ファイルも文字列です。

私は(2)文字列を比較して、2つの別々の条件に存在することを確認しよ$p1うとしています。p2$file

私は何が間違っていましたか?

ベストアンサー1

「タイプ別検索」演算子を使用するためにfind必要な構文がありません。

for file in $(find "$ROOTPATH" -type f); do

p1そして変数への割り当てはp2構文上正しくありません。

p1="file1"    # Assigns the value 'file1' to the variable p1
p1 = "file1"  # Attempts to execute `p1` with arguments '=' and 'file1'

また、両方のステートメントは同じであるため、ユースケースに応じて2番目のケースのコマンドを変更する必要がechoあるかもしれません。echo

また、ステートメントの構文にif欠陥があり、[[タグの前後にスペース文字またはコマンド区切り文字が必要です]]

おすすめ記事