2016-05-13 12 views
-1

ファイルが表示されていません。ファイルを引用符で囲みましたが、書き込むファイルはすべてperson.txtというファイルですそれをテストしなくても、ループ変数のシェルスクリプトを使用して複数のファイルに出力

#!/bin/sh 
    cut -f 1 $1 > temp1.txt 
    cut -f 2-3 $2 > temp2.txt 
    for ((i=3;i<103;i++)); do 
      cut -f $i $1 > temp3.txt 
      paste temp1.txt temp2.txt temp3.txt > $HOME/Desktop/Plots/person$iPlot.txt 
    done 
+0

このコードの意味を示すコメントが必要です。現時点では、コードの誤りとその特質とを区別することは困難です。 – agc

答えて

0

、スクリプトに問題が

$HOME/Desktop/Plots/person$iPlot.txt 

バッシュは、あなたが期待しているとして、あなたの変数iを代用しようとして、代わりに変数iPlotを解決しようとするとされていないされています。この変数には値が割り当てられていないため、person.txtになります。これは、bashが単語全体として変数を解決しようとするときに発生します。スペースまたは期間によって。

あなたの変数iが使用されていることを確認するために、代わりに

$HOME/Desktop/Plots/person${i}Plot.txt 

を試してみてください。

+0

ありがとうございました!なぜそれが実行するのに時間がかかるように考えているのですか?各列には約20000行がありますが、これらの列はまだ十分に単純なコマンドだと思っていますが、おそらく私は間違っています。 – Jacob

+3

多くのファイルI/Oを実行しています。 '$ 1'で指定されたファイルを一度メモリに読み込んだ後、その列を繰り返し読み込むのではなく、たびにファイルを読み直すほうが速いでしょう。 – chepner

+0

@ B.Monster chepnerのコメントを参照してください。 – andlrc

関連する問題