diff --git a/pishrink.sh b/pishrink.sh index 19ec060..11f4771 100755 --- a/pishrink.sh +++ b/pishrink.sh @@ -29,7 +29,7 @@ if (( EUID != 0 )); then fi #Check that what we need is installed -A=`which parted 2>&1` +A=$(which parted 2>&1) if (( $? != 0 )); then echo "ERROR: parted is not installed." exit -4 @@ -47,20 +47,20 @@ if [ -n "$2" ]; then fi #Gather info -beforesize=`ls -lah "$img" | cut -d ' ' -f 5` -partnum=`parted -m "$img" unit B print | tail -n 1 | cut -d ':' -f 1 | tr -d '\n'` -partstart=`parted -m "$img" unit B print | tail -n 1 | cut -d ':' -f 2 | tr -d 'B\n'` -loopback=`losetup -f --show -o $partstart "$img"` -currentsize=`tune2fs -l $loopback | grep 'Block count' | tr -d ' ' | cut -d ':' -f 2 | tr -d '\n'` -blocksize=`tune2fs -l $loopback | grep 'Block size' | tr -d ' ' | cut -d ':' -f 2 | tr -d '\n'` +beforesize=$(ls -lah "$img" | cut -d ' ' -f 5) +partnum=$(parted -m "$img" unit B print | tail -n 1 | cut -d ':' -f 1 | tr -d '\n') +partstart=$(parted -m "$img" unit B print | tail -n 1 | cut -d ':' -f 2 | tr -d 'B\n') +loopback=$(losetup -f --show -o $partstart "$img") +currentsize=$(tune2fs -l $loopback | grep 'Block count' | tr -d ' ' | cut -d ':' -f 2 | tr -d '\n') +blocksize=$(tune2fs -l $loopback | grep 'Block size' | tr -d ' ' | cut -d ':' -f 2 | tr -d '\n') #Check if we should make pi expand rootfs on next boot if [ "$should_skip_autoexpand" = false ]; then #Make pi expand rootfs on next boot - mountdir=`mktemp -d` + mountdir=$(mktemp -d) mount $loopback $mountdir - if [ `md5sum $mountdir/etc/rc.local | cut -d ' ' -f 1` != "0542054e9ff2d2e0507ea1ffe7d4fc87" ]; then + if [ $(md5sum $mountdir/etc/rc.local | cut -d ' ' -f 1) != "0542054e9ff2d2e0507ea1ffe7d4fc87" ]; then echo Creating new /etc/rc.local mv $mountdir/etc/rc.local $mountdir/etc/rc.local.bak #####Do not touch the following lines##### @@ -132,19 +132,19 @@ fi #Make sure filesystem is ok e2fsck -p -f $loopback -minsize=`resize2fs -P $loopback | cut -d ':' -f 2 | tr -d ' ' | tr -d '\n'` +minsize=$(resize2fs -P $loopback | cut -d ':' -f 2 | tr -d ' ' | tr -d '\n') if [[ $currentsize -eq $minsize ]]; then echo ERROR: Image already shrunk to smallest size exit -6 fi #Add some free space to the end of the filesystem -if [[ `expr $currentsize - $minsize - 5000` -gt 0 ]]; then - minsize=`expr $minsize + 5000 | tr -d '\n'` -elif [[ `expr $currentsize - $minsize - 1000` -gt 0 ]]; then - minsize=`expr $minsize + 1000 | tr -d '\n'` -elif [[ `expr $currentsize - $minsize - 100` -gt 0 ]]; then - minsize=`expr $minsize + 100 | tr -d '\n'` +if [[ $(expr $currentsize - $minsize - 5000) -gt 0 ]]; then + minsize=$(expr $minsize + 5000 | tr -d '\n') +elif [[ $(expr $currentsize - $minsize - 1000) -gt 0 ]]; then + minsize=$(expr $minsize + 1000 | tr -d '\n') +elif [[ $(expr $currentsize - $minsize - 100) -gt 0 ]]; then + minsize=$(expr $minsize + 100 | tr -d '\n') fi #Shrink filesystem @@ -161,14 +161,14 @@ sleep 1 #Shrink partition losetup -d $loopback -partnewsize=`expr $minsize \* $blocksize | tr -d '\n'` -newpartend=`expr $partstart + $partnewsize | tr -d '\n'` -part1=`parted "$img" rm $partnum` -part2=`parted "$img" unit B mkpart primary $partstart $newpartend` +partnewsize=$(expr $minsize \* $blocksize | tr -d '\n') +newpartend=$(expr $partstart + $partnewsize | tr -d '\n') +part1=$(parted "$img" rm $partnum) +part2=$(parted "$img" unit B mkpart primary $partstart $newpartend) #Truncate the file -endresult=`parted -m "$img" unit B print free | tail -1 | cut -d ':' -f 2 | tr -d 'B\n'` +endresult=$(parted -m "$img" unit B print free | tail -1 | cut -d ':' -f 2 | tr -d 'B\n') truncate -s $endresult "$img" -aftersize=`ls -lah "$img" | cut -d ' ' -f 5` +aftersize=$(ls -lah "$img" | cut -d ' ' -f 5) echo "Shrunk $img from $beforesize to $aftersize"