フロー制御でglobを使用するには?

フロー制御でglobを使用するには?

ディレクトリリスト(必要に応じてフォルダリスト)があります。

<something>.txt各ディレクトリには、データベースダンプから生成されたというファイルがあります。

ファイルが見つからない場合は、コマンドが失敗し、尊重してディレクトリに移動し、残りのチェックを完了できないため、ファイルが存在する場合にのみ進んで名前を変更する<something>.txtcronジョブを実行したいと思います。 "${PWD##*/}"_info.txt*.txtmvcd ..どちらが意図的ですか?いいえ以下のコードスニペットで説明または表示されています。

したがって、CONTEXTコードは次のようになります。

fの場合<ディレクトリ一覧>
する
  CD "${f}"
  if [-e "*.txt"];       ←質問部分です
    mv *.txt "${PWD##*/}".txt ← 残りはコンテキストを提供するだけです。
  フィリピン諸島
  CD..
完璧

この小さなクリップについての専門家のコメントがありますか?

この例をまとめました。重要な部分は条件です:

[ -e "*.txt" ]

ファイルが存在しても<something>.txt条件は失敗します。

それが私が尋ねるものです。

ベストアンサー1

1つの可能性は、globでこれらの項目で配列を作成し、配列に要素があるかどうかを確認できることです。たとえば、

cur_opt=$(shopt -p nullglob) # get current status so we can restore
shopt -s nullglob # to let the glob expand to nothing
txt_files=( *txt )
$cur_opt # restore nullglob setting to what it was before
if [ ${#txt_files} -gt 0 ]; then
    ...
fi

ファイルに対して操作を実行するには、配列に要素があるかどうかをテストするのではなく、配列を繰り返すこともできます。

一致するものがあるかどうか本当に確認したい場合は、compgen次のようなものを使用できます。

if [ ! -z "$(compgen -G "*.txt") ]; then
    ...
fi

これは単にリターンを確認することができるcompgenので、

if compgen -G "*.txt" &>/dev/null; then
    ...
fi

おすすめ記事