2016-05-13 43 views
-1

沒有任何文件出現,我試圖將文件寫入引號中,但是沒有文件正在寫入,我得到的是一個名爲person.txt的文件使用shell腳本打印多個文件以獲得循環變量

#!/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 

Bash是不會代替你變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

相關問題