2016-05-03 5 views
1

の出力の出力を整数と比較しようとしています。私はそれから期待されるアウトプットを得ていない。ここでシェルコマンドの整数変数と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 

コマンド123784(ファイルサイズ)を分割するが、最大ファイルサイズは123000.ここで予想される出力での出力がある「ファイル大きい」が、私は、ファイルのサイズを取得していますたびに低いです。コードの問題は何ですか?

答えて

3

あなたは変数にコマンドのSTDOUT(またはSTDERR)を保存するためにコマンド置換を必要とする:bashキーワード算術比較をしながら

FILESIZE=$(stat --printf='%s\n' "$XX_CONFIG_LOCATION") 

、それが現在の変数FILESIZEがnullに設定されている現状ではと[[右出力を与える:

$ foo=        
$ [[ $foo -gt 4 ]] && echo OK || echo Not OK 
Not OK 

bash(および他のシェル)は、変数12月中=の周りのスペース(複数可)を許可許可しない、ということに注意してください告知。

+0

@Thanks heemayl – Shriram

+0

@Shriram私の編集をチェック – heemayl

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 
[email protected]:~/.scratch$ 
関連する問題