从猫中划分价值

时间:2013-04-30 10:32:54

标签: bash shell unix cat

我的脚本的目标是获取/缓存分区位置(哪个有效),然后获取该位置的块大小并将其除以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

对此的一些帮助表示高度赞赏!

2 个答案:

答案 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"