同じフォルダサイズを検出するBashループ

同じフォルダサイズを検出するBashループ

大量のファイル転送が完了した時点を検出したいと思います。フォルダサイズを遅く検出してこれを行いたいと思います。

私がしたことは次のとおりです。

  #!/bin/bash

firstSize= du -s /Users/test/Desktop/folder | cut -f1

sleep 3
newSize= du -s /Users/test/Desktop/folder | cut -f1


until [ $firstSize -eq $newSize ]
do
    firstSize=$newSize
    sleep 3
    newSize= du -s /Users/test/Desktop/folder | cut -f1

done

echo 'Done'

firstSize と newSize が等しくない場合でもループが完了するため、Until ループは機能しません。私は初めてBashスクリプトを書いたので間違いを犯しました。このループは同じ目的で書かれたAppleScriptから移植されましたが、より安定したものが必要でした。

ベストアンサー1

コマンド構文を台無しにしました。スクリプトは次のようにする必要があります。

#!/bin/sh -
firstSize=$(du -s /Users/test/Desktop/folder | cut -f1)
until
  sleep 3
  newSize=$(du -s /Users/test/Desktop/folder | cut -f1)
  [ "$firstSize" -eq "$newSize" ]
do
    firstSize=$newSize
done
echo 'Done'

おすすめ記事