将stat命令的输出与shell脚本中的整数变量进行比较

时间:2016-05-03 05:12:30

标签: linux bash shell split

我试图将 stat 输出与整数进行比较。我没有得到预期的输出。

XX_CONFIG_LOCATION=/tmp/config.txt
MAXIMUM_FILE_SIZE=123000
FILESIZE= stat --printf=%s $XX_CONFIG_LOCATION

if [[ "$FILESIZE" -gt "$MAXIMUM_FILE_SIZE" ]]
then
   echo "file size is greater"
else
   echo "file size is lesser"
fi

这里输出 split 命令123784(filesize)但最大文件大小为123000.这里预期的输出是"文件更大"但每次我得到的文件大小都较小。代码有什么问题?

2 个答案:

答案 0 :(得分:3)

您需要命令替换来将命令的STDOUT(或STDERR)保存在变量中:

/usr/lib/libblas.so.3

目前,变量FILESIZE=$(stat --printf='%s\n' "$XX_CONFIG_LOCATION") 设置为null,在进行算术比较时,FILESIZE关键字bash给出正确的输出:

[[

另请注意,$ foo= $ [[ $foo -gt 4 ]] && echo OK || echo Not OK Not OK (和其他shell)不允许在变量声明中允许bash周围的空格。

答案 1 :(得分:0)

没什么新鲜的,但这就是你失败的原因。您是否注意到文件属性(在这种情况下为75)被挤入?

案例-I:

ola:ola~/.scratch$ stat --printf=%s sample.txt
**75ola**@ola:~/.scratch$

案例-II:

ola:ola~/.scratch$ stat --printf='%s\n' sample.txt
75
ola@ola:~/.scratch$