シェルスクリプト、FILES = $(ls)にファイルが含まれていることを確認する関数

シェルスクリプト、FILES = $(ls)にファイルが含まれていることを確認する関数

私はシェルスクリプトの初心者で、bashリストに変数があるかどうかを確認する関数を見つける必要があります。リストは次のように生成されます。FILES=$(ls)したがって、ファイルが存在することを確認する必要があります。-e両方のフォルダを同時に比較し、並列性で奇妙な作業をしたいので、テストを使用していないので、説明を始めると長すぎるようです。

このページが見つかりました。 https://stackoverflow.com/questions/8063228/how-do-i-check-if-a-variable-exists-in-a-list-in-bash

$FILESファイル名にスペースがある可能性があることを知っていて、私が作成した変数がこのページのエントリと同じリストであるかどうかわからないので、これが私にとって便利かどうかはわかりません。私が見つけようとしたとき、検索エンジンは-lsコマンドとは関係がないことを示しました。

また、問題は、そのページに記載されている関数で何が起こっているのか理解できないことです。私は次の式を含む関数について話しています。

 function contains() {
    [[ $1 =~ (^|[[:space:]])$2($|[[:space:]]) ]] && exit(0) || exit(1)
} 

それが何を意味するのかを検索し、ifをテストしたよう=~ですが、この奇妙な内容が何を意味するのかわかりません。検索エンジンで検索しようとすると、NASA関連のコンテンツまたはイベントが表示されます。 " shell script (^|[[:space:]]) " "space" という単語だけを考慮し、周囲の記号を完全に無視するので、行く必要がないことを表示します。$a =~ $bba(^|[[:space:]])($|[[:space:]])

また、括弧や角かっこなしで「and」の後に「or」が出る理由を理解できません。これは関連してはいけません。

答え1

^|[[:space:]])$2($|[[:space:]]正規表現です。周りの括弧は役に立たない。

  • ^文字列の先頭を表示
  • |「左側のパターンまたは右側のパターン」を意味します。
  • [[:space:]]スペースとタブを含む文字クラスです。
  • $文字列の終わりを表示

関連情報