-1

Я пытаюсь сделать следующий цикл, используя скрипт Bash

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 ответ1

6

Неясно, что именно вы ищете, но я сделал снимок в надежде, что это поможет вам.

Следующая программа должна быть помещена в текстовый файл. Допустим, вы называете это 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .