2014-02-06 18 views
0

我在輸入從文件中讀取一個shell腳本:

SH script_name.sh < file.txt的

我知道$ @將擁有文件的內容,我想遍歷文件 的每一行,因爲文件在每行上都有新條目。

我試圖做這樣的事情:

for i in [email protected] 
do 
    echo $i 
done 

,但似乎工作..注意我剛纔說的回聲$我的例子,但我希望做一些其他的操作。

我有在$行

下面

訪問元素的問題是代碼

while read line 
do 
     for i in $line: 
     do 
       echo $i 
     done 
done 

我在一個test.sh文件保存這一點,並在從test.txt文件下面飼料:

hello world 
time good 
world food 

這是我得到的輸出:

hello 
world: 
time 
good: 
world 
food: 

,你可以看到有一個額外的「:」在第二個字符串

+0

'$ @'不包含該文件的內容。它包含命令行參數。 ' chepner

回答

1
while read line 
do 
    echo $line 
done 

關於第二個要求,各行分割上的空白和處理每場結束時,您需要:

while read line 
do 
     for i in $line 
     do 
       echo $i 
     done 
done 

你一定是寫了太多的Python ;-),因爲你在示例中意外得到了尾隨:

你想:代替

for i in $line 

for i in $line: 
+0

也許你可以使用'cut'或'awk',如果它是你想要的字段提取。或者你想在空間上分成多行?在那種情況下,你可能會考慮'tr'''\ n''? –

+0

糟糕。我想我回應了一個已經消失的評論。 –

+0

對不起,評論意外被刪除。 感謝作品的魅力。 但有一個小問題,我想通過以下拆分它: 同時讀取線 在$行我做 做 回聲$我 做 做 這會導致分離項目的最後空間在結尾附加一個額外的「:」。不知道爲什麼 – Rave