我试图将 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.这里预期的输出是"文件更大"但每次我得到的文件大小都较小。代码有什么问题?
答案 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)被挤入?
ola:ola~/.scratch$ stat --printf=%s sample.txt
**75ola**@ola:~/.scratch$
ola:ola~/.scratch$ stat --printf='%s\n' sample.txt
75
ola@ola:~/.scratch$