Diviser la valeur du chat

Le but de mon script est d’obtenir l’emplacement des partitions / cache (qui fonctionne), puis d’obtenir la taille de bloc de cet emplacement et de la diviser par 1024. Alors je veux sortir la taille, j’ai essayé de nombreuses manières mais je ne peux pas faites-le bien fonctionner.

#!/bin/bash -v if [ -e mounts ]; then rm -f mounts fi; ./adb -d shell "mount" > mounts export CACHEPARTITION=`cat mounts | grep /cache`; var=$(echo $CACHEPARTITION | awk -F"/" '{print $1,$2,$3,$4}') set -- $var echo "Cache mount point: "$1/$2/$3; export CACHEPART=$1/$2/$3 

Cela exporte par exemple: / dev / block / mmcblk0p16 vers le fichier “mounts”

 if [ -e cachepartition ]; then rm -f cachepartition fi; ./adb -d shell "blockdev --getsize64 '${CACHEPART}'" > cachepartition 

Cette exporte par exemple: 104857600 qui doit être divisé par 1024 ci-dessous

 export CACHESIZE=`cat cachepartition`; DIVIDE=1024 export OUTPUT=`expr ${CACHESIZE} / ${DIVIDE}` echo ${OUTPUT} 

Au lieu de mettre en valeur la valeur, puis-je la canaliser? et le faire réellement faire la division. Je suis un peu fou au script bash, c’était la méthode la plus facile à laquelle je pensais, mais il est toujours difficile pour moi de le voir lol

Une aide à ce sujet est très appréciée!

Vous pouvez le faire comme ceci:

 CACHESIZE=$(./adb -d shell "blockdev --getsize64 '${CACHEPART}'") DIVIDE=1024 

Pour la division entière simple:

 OUTPUT=$((CACHESIZE/DIVIDE)) 

Pour la division en virgule flottante:

 OUTPUT=$(bc -l <<< "$CACHESIZE"/"$DIVIDE") 

Vous avez également une utilisation inutile de Cat . Au lieu de:

 cat mounts | grep /cache 

écrire:

 grep /cache mounts 

Il y a aussi une utilisation inutile de l'écho . Au lieu de:

 echo $CACHEPARTITION | awk -F"/" '{print $1,$2,$3,$4}' 

écrire

 awk -F"/" '{print $1,$2,$3,$4}' <<< "$CACHEPARTITION" 

Bien sûr, vous pouvez prendre la sortie de la commande en utilisant `ou $ ():

 part_size_bytes=$(./adb -d shell "blockdev --getsize64 '${CACHEPART}'") # divide it by 1024 part_size_kb=$(($part_size_bytes / 1024)) echo "cache size is $part_size_kb kb."