用于检测相同文件夹大小的 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 不相等,循环也会完成。我不熟悉编写 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'

相关内容