当前位置: 技术问答>linux和unix
初学shell,自己写了一个计算db2数据库表空间使用率的shell,怎么也调补通。。。
来源: 互联网 发布时间:2016-10-23
本文导语: 具体代码如下: #!/bin/sh # name:used percent # showing used percent of tablespaces DATABASE_NAME=test export DATABASE_NAME USER_ID=admin export USER_ID PSWD=111111 export PSWD db2 connect to $DATABASE_NAME user $USER_ID using $PSWD db2 list tablespaces show...
具体代码如下:
#!/bin/sh
# name:used percent
# showing used percent of tablespaces
DATABASE_NAME=test
export DATABASE_NAME
USER_ID=admin
export USER_ID
PSWD=111111
export PSWD
db2 connect to $DATABASE_NAME user $USER_ID using $PSWD
db2 list tablespaces show detail > temp.txt
TN=`grep -i "total page" temp.txt | awk 'END{print NR}'`
if [ $TN -gt 0 ]
then
counter=0
while [[ $counter -lt $TN ]]
counter=$((counter+1))
NA=`grep -i "name" temp.txt | awk '{if(NR==$counter) print $3}'`
TOTAL=`grep -i "total pages" temp.txt | awk '{if(NR==$counter) print $4}'`
USED=`grep -i "used pages" temp.txt | awk '{if(NR==$counter) print $4}'`
PERCENTAGE=$(echo "$USED/$TOTAL*100"|bc)
echo "表 $NA 的使用率为 $PERCENTAGE %"
done
else
echo "错误数据,请检查后重试"
fi
预期的目的是运行shell后显示出表名+使用率%,依次显示库中所有表的使用率信息,请大家看看,语法有什么问题么?为什么总是有问题?应该怎么修改?如果有高手,请帮帮忙!!不胜感激
#!/bin/sh
# name:used percent
# showing used percent of tablespaces
DATABASE_NAME=test
export DATABASE_NAME
USER_ID=admin
export USER_ID
PSWD=111111
export PSWD
db2 connect to $DATABASE_NAME user $USER_ID using $PSWD
db2 list tablespaces show detail > temp.txt
TN=`grep -i "total page" temp.txt | awk 'END{print NR}'`
if [ $TN -gt 0 ]
then
counter=0
while [[ $counter -lt $TN ]]
counter=$((counter+1))
NA=`grep -i "name" temp.txt | awk '{if(NR==$counter) print $3}'`
TOTAL=`grep -i "total pages" temp.txt | awk '{if(NR==$counter) print $4}'`
USED=`grep -i "used pages" temp.txt | awk '{if(NR==$counter) print $4}'`
PERCENTAGE=$(echo "$USED/$TOTAL*100"|bc)
echo "表 $NA 的使用率为 $PERCENTAGE %"
done
else
echo "错误数据,请检查后重试"
fi
预期的目的是运行shell后显示出表名+使用率%,依次显示库中所有表的使用率信息,请大家看看,语法有什么问题么?为什么总是有问题?应该怎么修改?如果有高手,请帮帮忙!!不胜感激
|
去掉done
|
说错啦!!
你有while循环 done是必须的
错误在于while的结构错误
在while [[ $counter -lt $TN ]]
下面追加一句
do
while循环的语法是
while condition
do
.....
done