[英]comparing the output of stat command with integer variable in shell script
我試圖將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.這里預期的輸出是“文件更大”,但每次我得到的文件大小都較小。 代碼有什么問題?
您需要命令替換來將命令的STDOUT(或STDERR)保存在變量中:
FILESIZE=$(stat --printf='%s\n' "$XX_CONFIG_LOCATION")
因為它目前的變量FILESIZE
被設置為null並且在進行算術比較時bash
關鍵字[[
給出正確的輸出:
$ foo=
$ [[ $foo -gt 4 ]] && echo OK || echo Not OK
Not OK
另請注意, bash
(和其他shell)不允許在變量聲明中允許空間=
。
沒什么新鮮的,但這就是你失敗的原因。 你注意到文件屬性(在這種情況下是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$
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.