我试图在HP-UX上以易于理解的形式显示大小。我们有一些用于sftp传输的旧系统。这些服务器连接到T1租用线路,并且传输速度非常慢。我偶尔需要检查大小以验证是否已完成传输。由于HP-UX无法以kb或GB显示大小,因此我们必须手动划分输出以进行验证。我只是试图建立一个小的脚本来显示以GB为单位的大小。
read -p "Enter File Path/Location " location
output=$(ls -l $location | cut -d ' ' -f 18)
#output=$(ls -l /central/home/sftp/file.daily | cut -d ' ' -f 18)
echo "Size in GB is: ${output}"
#echo "Size in GB is: ${output} / (1024*1024*1024)" not working "
bash-4.4$ ./script
Enter File Path/Location /central/home/sftp/file.daily
Size in GB is: 153844074
bash-4.4$
伙计们/加尔斯,我不是专业人士,只是学习一些东西来增强我对bash脚本的了解。
您的命令echo "Size in GB is: ${output} / (1024*1024*1024)"
不起作用,因为表达式只是一个字符串。要在bash中进行计算,请使用算术上下文$(( ... ))
。但是,bash
由于无法处理浮点数,因此我不得不求助于bc
。
另外,ls | cut -f 18
似乎有点奇怪。这将检索第18个字段。我的输出ls -l
只有9个字段,文件大小是第5个字段。
除了解析外,ls
您还可以解析du
,这更简单且不易出错。du -k
以kB(= 1024字节)打印大小。
#! /usr/bin/env bash
size_kB=$(du -k "$1" | cut -f 1)
size_GB=$(echo "scale=1; $size_kB / 1024 / 1024;" | bc)
echo "File $1 has size $size_GB GB"
将此脚本存储在可执行文件中,然后将其用作
bash$ path/to/myscript.sh someFile
File someFile has size 12.3 GB
将文件名作为参数传递允许您使用制表符补全。使用不可能实现read
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句