#!/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を削除する必要がありますか?私は本当にif-elseの構文とbashのforループをすべて知っていません...このような単純な質問であればごめんなさい。私は助けに感謝します!恥ずかしがらず簡単なbashスクリプトヘルプ
編集(コメントからの更新を掲示する)
私はその中のファイルで1000個のサブディレクトリで、インデックスに俳優と呼ばれるディレクトリをしようとしています。 javaプログラムは実行されますが、1000個のディレクトリ(約180万)のすべてのファイルを処理することはできません。私はそれを一度にサブディレクトリで行うスクリプトを書こうとしています。
これを行うにはサーバーにsshしていますが、しばらく時間がかかりますので、削除しないようにしてください。私はヒープメモリが不足しているので、ディレクトリ全体でjavaプログラムを実行することはできません。それは最も効率的なJavaコードではありませんが、このスクリプトがサブディレクトリ単位で実行されている間に、この問題の別の解決策に取り組んでいます。
if [ $i -lt 10 ] ; then
# ....
fi
注[
は通常/usr/bin/[
に、普通のコマンドであり、それはそのように扱わなければならないこと:
まず、何をしようとしていますか?それが間違っていると言うことができます。 –
プログラムに '〜'を使って相対パスの代わりに絶対パスを指定しようとしましたか?また、現在のスクリプトの何が間違っているかを明確にすることができますか?注 - nohupは問題なく動作します。最後に '&'を追加して、ブロックするのではなくバックグラウンドで実行することもできます。最後に、コメントにコメントを投稿するのではなく、詳細を追加して質問を更新してください。 –
ああ、申し訳ありません私はちょうどそれらを別のフォルダにあり、スクリーンを乱雑にしたくないからです。私はケレックの答えを試してみると思います。 – ae0709