bash 中的 while 循环直到文件大小不再改变

bash 中的 while 循环直到文件大小不再改变

我正在尝试使用 bash 脚本在 while 循环中执行以下操作

file_size = 0
temp_size = 1
output_file
while (file_size != temp_size)
     temp_size = file_size
     download file
     append to output_file if possible
     file_size = sizeof(output_file)

谢谢!

答案1

目前尚不清楚您到底在寻找什么,但我已尝试过,希望这能够对您有所帮助。

以下程序需要放在文本文件中。假设您将其命名为dl。您需要使用以下命令更改其权限

chmod u+x dl

通过传递您要查找的输出文件名来运行它。

./dl output

它从我硬编码的 URL 下载图像文件,一遍又一遍地将输出附加到输出文件,直到输出文件的大小等于或大于您在变量中指定的大小temp_size

#!/usr/bin/env bash

STAT="stat -c%s"
if [ $(uname) == "Darwin" ]; then
  STAT="stat -f%z"
fi

if [[ $# -ne 1 ]]; then
  echo "Usage: $0 output_filename"
  exit 1
fi

output_file="$1"
file_size=$($STAT "$output_file")
temp_size=1000000
download_file="http://www.google.com/logos/doodles/2013/franz_kafkas_130th_birthday-1976005-hp.png"
while [[ $file_size -le $temp_size ]]; do
  wget -O - $download_file >> "$output_file"
  file_size=$($STAT "$output_file")
done
echo $output_file is now $file_size bytes.

如果您使用相同的参数再次运行它,它将不会执行任何操作,因为输出文件已经大于 temp_size。您可以通过为其指定另一个文件名或删除输出文件来重置它。

rm output

相关内容