我用来du
在打包器脚本中获取结果存档的文件大小:
> du -smh archive.zip
51M archive.zip
我想将部分分配51M
给变量,以便能够打印:
Archive size: 51M
我怎样才能做到这一点?
答案1
你可以这样做:
$ variable=$(du -smh archive.zip | awk '{print $1}')
细节
awk
将解析输出并将其分解为列。您只需要第一列的结果。 $( .. ) 代码将运行命令并返回其结果。
答案2
或者使用该stat
程序(如果可用)(通常默认在 Linux 上)。没有人类可读的 K/M/G 转换,但它也不需要任何其他东西来获取数字/有很好的格式选项:
sauer@humpy:~$ stat -c "%s" /etc/passwd
2302
sauer@humpy:~$ stat -c "%n size: %s bytes" /etc/passwd /etc/shadow
/etc/passwd size: 2302 bytes
/etc/shadow size: 1389 bytes
答案3
awk 是一个比你需要的更大的锤子,用刀切,
variable=$(du -smh archive.zip | cut -f1 )