如何在 BASH 中获取文件大小(可读大小不以字节为单位)

Ven*_*lev 2 command-line bash

这是我的 shell 文件中的内容:

FILENAME=/var/lib/backups/html-backup/backup-15-04-2016.tar.gz;
FILESIZE= $(ls -lah $FILENAME | awk '{ $FILESIZEINGB = $5}')
echo "Size is $FILESIZEINGB ."
Run Code Online (Sandbox Code Playgroud)

您能告诉我为什么我看不到可读形式的文件大小吗?

似乎 $FILESIZEINGB 未设置,我在输出中看不到结果echo

mur*_*uru 5

您无法从子进程设置 shell 变量 - 因此设置FILESIZEINGB无论如何都不起作用(并且它不起作用,因为这意味着awk语法中的其他内容)。

只需使用du -h

FILESIZEINGB=$(du -h "$FILENAME" | awk '{print $1}')
Run Code Online (Sandbox Code Playgroud)

还:

  • 后面不应该有空格=