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."