我的脚本的目标是获取/缓存分区位置(哪个有效),然后获取该位置的块大小并将其除以1024.然后我想输出大小,我尝试了很多可能的方法但我无法让它正常工作。
#!/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
这导出例如:/ dev / block / mmcblk0p16到文件“mounts”
if [ -e cachepartition ]; then
rm -f cachepartition
fi;
./adb -d shell "blockdev --getsize64 '${CACHEPART}'" > cachepartition
这导出例如:104857600,需要除以低于1024
export CACHESIZE=`cat cachepartition`;
DIVIDE=1024
export OUTPUT=`expr ${CACHESIZE} / ${DIVIDE}`
echo ${OUTPUT}
我可以管它而不是抓住价值吗?并使它实际上做分裂。 我对bash脚本有点不同,这是我想到的最简单的方法,但它对我来说仍然很难看似lol
对此的一些帮助表示高度赞赏!
答案 0 :(得分:0)
当然,您可以使用`或$():
获取命令输出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."
答案 1 :(得分:0)
你可以这样做:
CACHESIZE=$(./adb -d shell "blockdev --getsize64 '${CACHEPART}'")
DIVIDE=1024
对于简单的整数除法:
OUTPUT=$((CACHESIZE/DIVIDE))
对于浮点除法:
OUTPUT=$(bc -l <<< "$CACHESIZE"/"$DIVIDE")
您还有一个Useless Use of Cat。而不是:
cat mounts | grep /cache
写:
grep /cache mounts
也有Useless Use of Echo。而不是:
echo $CACHEPARTITION | awk -F"/" '{print $1,$2,$3,$4}'
写
awk -F"/" '{print $1,$2,$3,$4}' <<< "$CACHEPARTITION"