ЛОР, у меня проблемы с логикой. Хочу разбить файл на несколько более мелких, да не просто разбить, а чтобы размер этих файлов и количество файлов было рандомно. С целью дополнительной конспЫрации тэк сказать. =)
split этого не умеет, пришлось ваять костыль, который вроде работает, но, иногда случается полная херня.
#!/bin/sh
host=`hostname`
date=`date +'%F %T'`
size=42
size=$(($size * 1024 * 1024))
rand=1
while [ $rand -lt $size ]; do
rand=$(($rand * $RANDOM))
done
while [ $size -gt 0 ]; do
if [ $size -gt 100500 ]; then
chunk=$(($rand % $size))
size=$(($size - $chunk))
else
chunk=$size
size=0
fi
digit=$((${digit:-0} + 1))
echo dd if=/tmp/snapshot.img of="/tmp/$host $date `printf %05d $digit`" bs=$chunk count=1
done
херня заключается в том, что скрипт иной раз уходит в бесконечный цикл
$ sh test.sh
dd if=/tmp/snapshot.img of=/tmp/host 2015-05-28 13:02:28 00001 bs=14829696 count=1
dd if=/tmp/snapshot.img of=/tmp/host 2015-05-28 13:02:28 00002 bs=15278592 count=1
dd if=/tmp/snapshot.img of=/tmp/host 2015-05-28 13:02:28 00003 bs=5386752 count=1
dd if=/tmp/snapshot.img of=/tmp/host 2015-05-28 13:02:28 00004 bs=368256 count=1
dd if=/tmp/snapshot.img of=/tmp/host 2015-05-28 13:02:28 00005 bs=4787328 count=1
dd if=/tmp/snapshot.img of=/tmp/host 2015-05-28 13:02:28 00006 bs=1223040 count=1
dd if=/tmp/snapshot.img of=/tmp/host 2015-05-28 13:02:28 00007 bs=1083264 count=1
dd if=/tmp/snapshot.img of=/tmp/host 2015-05-28 13:02:28 00008 bs=0 count=1
dd if=/tmp/snapshot.img of=/tmp/host 2015-05-28 13:02:28 00009 bs=0 count=1
dd if=/tmp/snapshot.img of=/tmp/host 2015-05-28 13:02:28 00010 bs=0 count=1
dd if=/tmp/snapshot.img of=/tmp/host 2015-05-28 13:02:28 00011 bs=0 count=1
dd if=/tmp/snapshot.img of=/tmp/host 2015-05-28 13:02:28 00012 bs=0 count=1
dd if=/tmp/snapshot.img of=/tmp/host 2015-05-28 13:02:28 00013 bs=0 count=1
хотя в упор не вижу где у меня с логикой проблема. помогите?