我正在尝试使用 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