Я просматривал руководство по последней версии Linux Shell Handbook для Linux Pro mag, и у меня возникли проблемы с работой этого блока кода. Когда я запускаю скрипт, он говорит мне, что команды 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 }'
из командной строки без проблем и видел ожидаемый результат, но скрипт не работает.
PATH=/bin:/user/bin
должен быть
PATH=/bin:/usr/bin
И awk
и du
, находятся в /usr/bin
:
$ type -p du;type -p awk
/usr/bin/du
/usr/bin/awk