Все уровни вопроса принимаются здесь.
Вы можете использовать awk
, чтобы получить только первое поле:
du -b /path/to/file | awk '{print $1}'
Ваш сценарий будет выглядеть примерно так:
filename=$1
if [ -f ${filename} ]; then
filesize=$(du -b ${filename} | awk '{print $1}')
echo "The name of file is ${filename}"
echo "Its size is ${filesize}"
else
echo "The file specified does not exists"
fi
Вы заметите, что я также изменил несколько других вещей:
- Я предпочитаю
$(X)
вместо `X` для захвата вывода команды просто потому, что их легче вкладывать.
- Если вы уже положили
$1
в $filename
, вы также можете использовать $filename
с этого момента ($1
в awk
- это другой зверь).
- Я предпочитаю помещать все свои переменные в
${}
, чтобы читателю и оболочке было очевидно, что к ${var}X
добавляется $var
с добавлением X
, а не $ varX как несуществующий $ { varX}.
Это действительно личные предпочтения, но, как и все мои личные предпочтения, я считаю их лучшими практиками для всей ИТ-индустрии: -)