我想减去两个文件的大小。我找到了这些文件的位置,然后使用了命令:
du -h /bin/ip | cut -d "K" -f1
我有508,我想创建变量
x=$((du -h /bin/ip | cut -d "K" -f1))
但结果我得到了
“-bash:du -h / bin / ip | cut -d'K'-f1:除以0(错误标记为” bin / ip | cut -d'K'-f1“))
我做错了什么?如何将这个值放入变量?
我想减去两个文件的大小。我找到了这些文件的位置,然后使用了命令:
du -h /bin/ip | cut -d "K" -f1
我有508,我想创建变量
x=$((du -h /bin/ip | cut -d "K" -f1))
但结果我得到了
“-bash:du -h / bin / ip | cut -d'K'-f1:除以0(错误标记为” bin / ip | cut -d'K'-f1“))
我做错了什么?如何将这个值放入变量?
我做错了什么?
您使用了arithmetic expansion $(( ... ))
而不是command substitution $( ... )
。结果,shell将/bin
解释为/
作为除法,将bin
解释为0
(因为没有名为bin
的变量),并试图除以0。
如何将该值放入变量中?
使用命令替换:
x=$(du -h /bin/ip | cut -d "K" -f1)
但是使用stat收集有关文件的信息会更加可靠:
x=$(stat -c %s /bin/ip)
要减去两个文件的大小,您可以再次使用命令替换来获取大小,但使用算术扩展来计算差异。
difference=$(( $(stat -c %s file1) - $(stat -c %s file2) ))
,
抢救Perl!
perl -le 'print((-s "file1.txt") - (-s "file2.txt"))'
-l
将换行符添加到print
-s
返回文件大小(请参见-x)