#!/bin/sh
for i in {0..999}
do
if [$i lt 10]
then
nohup java BeginIndex ~actors/00{$i} ~/index_new/ > ~/results/actors_results/00{$i}.txt
echo "INDEXING ($i)th directory completed "
elif [$i lt 100]; then
nohup java BeginIndex ~/actors/0{$i} ~/index_new/ > ~/results/actors_results/0{$i}.txt
echo "INDEXING ($i)th directory completed "
else
nohup java BeginIndex ~/actors/{$i} ~/index_new/ > ~/results/actors_results/{$i}.txt
echo "INDEXING ($i)th directory completed "
fi
done
このスクリプトの何が問題なのか誰か教えてもらえますか? 最初に #!/bin/bash を実行する必要がありますか? また、このスクリプトを記述どおりに nohup できますか、それとも if-else ステートメントの nohup を削除する必要がありますか? bash の if-else と for ループのすべての構文を本当に知っているわけではありません...これが非常に単純な質問である場合は申し訳ありません。助けてくれてありがとう!
編集 (コメントからの更新の投稿)
1000 個のサブディレクトリがあり、その中にファイルが含まれている、actor というディレクトリのインデックスを作成しようとしています。Java プログラムは実行されますが、これらの 1000 個のディレクトリ (約 180 万個) 内のすべてのファイルを処理することはできません。一度にサブディレクトリを実行するスクリプトを書きたいと思います。
これを行うためにサーバーに ssh していますが、しばらく時間がかかるので、ドロップしないようにします。ヒープメモリが不足しているため、ディレクトリ全体でJavaプログラムを実行することはできません。これは最も効率的な Java コードではありませんが、このスクリプトが一度にサブディレクトリを実行している間に、その問題に対する別の解決策に取り組んでいます。