use*_*713 -1 bash bash-scripting
我正在尝试使用 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)
Run Code Online (Sandbox Code Playgroud)
谢谢!
目前尚不清楚您究竟在寻找什么,但我已经拍摄了希望这会对您有所帮助。
下面的程序需要放在一个文本文件中。让我们说你的名字dl
。你需要改变它的权限
chmod u+x dl
Run Code Online (Sandbox Code Playgroud)
您可以通过传入您要查找的输出文件名来运行它。
./dl output
Run Code Online (Sandbox Code Playgroud)
它在我硬编码的 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.
Run Code Online (Sandbox Code Playgroud)
如果使用相同的参数再次运行它,它将什么也不做,因为输出文件已经大于 temp_size。您可以通过给它另一个文件名或删除输出文件来重置它。
rm output
Run Code Online (Sandbox Code Playgroud)