【Shell】動態呼叫awk自訂函數
*test.sh
#!/bin/bash
awkshell="/tmp/newdf.$$"
#awkshell="/tmp/newdf"
trap "rm -f $awkshell" exit
cat << EOF > $awkshell
function showunit(size){
mb = size / 1024;
gb = mb / 1024;
if ( size < 1024 || substr(size,1,1) !~ "[0-9]" || substr(size,2,1) !~ "[0-9]" ){ return size }
else if ( mb < 1 ){ return size"K" }
else if ( gb < 1 ){ return (int(mb*100)/100)"M" }
else { return (int(gb*100)/100)"G"}
}
!/Filesystem/{
size=showunit($1)
print size
}
EOF
#echo $awkshell
#cat $awkshell
echo $1 | awk -f $awkshell
exit 0
[root]$ sh test.sh 6666
6.5M
[root]$ sh test.sh 66666
65.1M
[root]$ sh test.sh 666666666
635.78G