2017-06-22 4 views
-1

のループ問題まで、私は以下のようにbashでループまで書いています:bashの

#!/bin/bash 


#check of the out file size and wait file size is reached to feed file then come out 


FEED_FILE_SIZE=$(stat -c%s "$FEED_FILE") 
echo "FEED_FILE_SIZE : "$FEED_FILE_SIZE 


until[[ $(stat -c%s "$OUT_FILE") -gt $FEED_FILE_SIZE]] 
    do 
     echo "sleeping for next 5 seconds " 
     sleep 5 
    done  

が、私はエラーの下になっていると私は理由を理解することはできませんよ?

./dtcc.sh: line 140: until[[ 0 -gt 185219880]]: command not found 
./dtcc.sh: line 141: syntax error near unexpected token `do' 
./dtcc.sh: line 141: ` do' 

私を助けてください。前もって感謝します。

+0

変数 'FEED_FILE'と' OUT_FILE'は初期化されていません。デバッグモードを有効にするには、第2行に 'set -x'を挿入してください。それから、私が見たものを見ることができます。初期化されていない変数は何も展開されません。したがって、 'until'は構文的に不正確になります。 (変数を初期化した後、私は既に何が答えられているかを理解しました) – Scheff

+1

@Scheffそれは問題ではありません。構文はうまくいくでしょう。むしろ '-gt'の各空文字列の引数は単に0として扱われます。 – chepner

+0

@chepnerそれは知っておもしろいことです。私はよく '' [["x $ VAR" == "x"]]のようなものを見たことを覚えています。次に "VAR empty"をエコーし​​ます。 fi'。しかしあなたは正しいです。ちょうどそれをチェックアウトしました: '[[$ VAR ==" "]];次に "VAR empty"をエコーし​​ます。 fi'も同様に働く。おそらく、これは古いバージョンのbashの問題でした。 (その観察は実際にはかなり前のことです。)それは決して問題ではなく、私が学んだ誰かの気持ちだけです。 – Scheff

答えて

3

短い答え:スペース。

あなたはそれがうまく動作します見つける必要がありますまでの間にスペースを追加し、[[、および他の間で$ FEED_FILE_SIZEと]]