ファイルサイズが与えられると、bash whileループは中断されます。

ファイルサイズが与えられると、bash whileループは中断されます。

だから私はこの本を買った。素数とプログラミング、進行が非常に困難です。今日、私は第1章で説明した(簡単な)プログラムを書いています:

#!/usr/bin/env python

import math

def find_gcd(a,b):
    while b > 0:
        r = a - b * math.floor(a/b)
        a = b
        b = r
    return int(a)

if __name__ == "__main__":
    import random, sys
    while True:
        print find_gcd(random.randrange(int(sys.argv[1])), random.randrange(int(sys.argv[2])))

…今はこう呼びました。

./gcd-rand.py 10000 10000 > concievablyreallyhugefile

...今、私はbash非常に大きなファイルが特定のサイズに達すると、1行が壊れるという夢を見ています。私はそれが次のように見えると思います。

while $(du -h f) < 32M; do ./gcd-rand.py 10000 10000 > $f; done

...しかし、私は以前にwhileループを書いたことがなく、bash構文がどのように機能するのかわかりません。

ベストアンサー1

秘密は、testコマンドtestまたはそれに対応するコマンドを使用することです[ ... ]

 while [ "$(du -m f|cut -f1)" -lt 32 ]
 do 
  ./gcd-rand.py 10000 10000 > "$f"
 done

詳細についてはを参照してくださいhelp test

ノート

testまたは、[コマンドはbashです。組み込み。ヘルプ情報はbashで、help testまたはbash内で検索できますhelp [。シェルに対応するコマンドがない場合に使用されるコマンドをman test示します。test組み込みまたは明示的にとして呼び出されます/usr/bin/test

おすすめ記事