
Kod: Markera allt
#! /bin/bash
#
function isnum {
echo ">>$1"
if [[ $1 =~ ^[0-9]+$ ]]; then
echo ">1=$1"
return 1
fi
echo ">0"
return 0
}
function drawbar {
NEWFILE=$1
OLDSIZE=$2
touch $NEWFILE
while [[ true ]]; do
let NEWSIZE=$(ls -l $NEWFILE | awk '{ print $5 }')
let Q=$((100*NEWSIZE/OLDSIZE))
#
let K=$((100-$Q))
#
echo -n "["
I=$Q
while [[ $I -gt 0 ]]; do
echo -n "="
let I=$I-1
done
I=$K
while [[ $I -gt 0 ]]; do
echo -n " "
let I=$I-1
done
echo -n "] $Q% "
#
if [[ $Q -ge 100 ]]; then
break
fi
#
sleep 1
printf "\r"
done
}
#
if [[ -z $1 || -z $2 ]]; then
echo
echo "-At least two parameters required, if= and of="
echo
exit
fi
N=$#
PARAM=$@
#
let i=1
for P in $PARAM; do
IF=$(echo $P | awk '{ print index($1,"if=") }')
OF=$(echo $P | awk '{ print index($1,"of=") }')
if [[ $IF != 0 ]]; then
INFILE=$(echo $P | awk '{ split($0, p, "="); print p[2]; }')
elif [[ $OF != 0 ]]; then
OUTFILE=$(echo $P | awk '{ split($0, p, "="); print p[2]; }')
fi
let i=i+1
done
#
echo
file $INFILE | grep "block special" >> /dev/null
if [[ $? == 0 ]]; then
PART=$(echo $INFILE | awk '{ split($0, p, "/"); print p[3]; }')
DEV=$(echo $PART | awk '{ print substr($0,1,3) }')
#SZ=$(parted $INFILE unit B print | awk '{y=x; x=$4};END{print y}' | sed 's/B//')
SIZE=$(expr 512 '*' $(cat /sys/block/$DEV/$PART/size))
else
SIZE=$(ls -l $INFILE | awk '{ print $5 }')
fi
LOG=$(mktemp)
dd $PARAM > $LOG 2>&1 &
PID=$(jobs -l | grep "dd \$PARAM" | awk '{ print $2 }')
drawbar $OUTFILE $SIZE
echo
echo "Checking PID=$PID"
wait $PID
echo "OK"
cat $LOG
rm $LOG
echo