我正在学习 Linux Pro mag 的最新 Linux Shell Handbook 教程,但无法让这段代码正常工作。当我运行脚本时,它告诉我未找到命令du
。awk
#!/bin/bash
PATH=/bin:/user/bin
. /usr/local/sbin/functions.bash
printf "USER\tGB USED\n"
for WHO in $(</user/local/sbin/chusers); do
HOMESUM=`eval du -s -$WHO |awk '{print $1}'`
TMPLIST=$( ls -lR --block-size 1024 $(</user/local/bin/chdirs) | egrep "^.......... +[0-9]+ $WHO" | awk '{print $5}' )
TSUM=0
for N in $TMPLIST; do
TSUM=$(( $TSUM+$N ))
done
TOT=$(( $HOMESUM+$TSUM ))
to_gb $WHO $TOT
done
以下to_gb
是function.bash
to_gb()
{
local MB D1 D2 USER
USER=$1
MB=$(( $2/1024))
D1=$(( $MB/1000))
D2=$(( $MB-($D1*1000) ))
printf "%s\t%s\n" $USER $D1.${D2:0:1}
return
}
我已经能够毫无问题地从命令行运行每个命令并看到预期的输出,但是脚本无法运行du -s ~username
。awk '{ print $1 }'
答案1
PATH=/bin:/user/bin
应该
PATH=/bin:/usr/bin
awk
和均du
位于/usr/bin
:
$ type -p du;type -p awk
/usr/bin/du
/usr/bin/awk