簡體   English   中英

將stat命令的輸出與shell腳本中的整數變量進行比較

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM