続きをたくさん含むbashスクリプトの結果を印刷します。

続きをたくさん含むbashスクリプトの結果を印刷します。

2つのループを使用するスクリプトがあります。
最初のループ- 特定のファイルを検索し、そのファイルが存在する場合は追加のテストを実行します。私はサーバーでCPUをあまり使用しないようにcontinueループで使用することにしました。
2回目のサイクル- 最初のループに基づいて結果を印刷します。

スクリプトはおおよそ次のようになります。

for line in `find ./ -type f`; do

# first file test
   if [[ -f /directory/test1 ]]; then
        present=1
        continue
   fi
# second file test
   if [[ -f /directory/test2 ]]; then
        present=1
        continue
   fi
done

if [[ $present = '1' ]]; then
   echo "exists" 
else
   echo "does not exist"
fi

したがって、デフォルトでは、最初のテスト(最初のファイルテストまたは2番目のファイルテスト)が有効な場合、ループは壊れてcontinue新しい反復が開始されるため、スクリプトの一番下に到達しません。

これにより2番目のテストが失敗し、スクリプトは次のファイルを含む結果のみを印刷します。存在しない

私の質問は、すべての結果(存在と不在)を印刷する方法です。

ありがとうございます。

ベストアンサー1

次のように書いてみてください。

if [[ -f /directory/test1 || -f /directory/test2  ]]; then
    echo exists
else
    echo 'does not exist'
fi

また、あなたがする必要があります出力を解析しません。findあなたも同じ理由で解析しないでくださいls

おすすめ記事