2016-02-19 44 views
0

什麼基本上,我試圖做的是自動檢測是否存在一行文本,如果是創建一個包含在上述行的文本新的變量,在腳本中。如果一行中沒有文本,則該變量不會被創建。我可以通過打開文件手動做到這一點 -指定從文本文件的每一行新的變量

$ cat file.txt 
    sometxt 
    somemoretext 
    evenmoretext 
    ... 

然後添加到我的劇本合適的線 -

TXT=file.txt 
VAR1=$(sed -n 1p $TXT) 
VAR2=$(sed -n 2p $TXT) 
... 

但是這是一種痛苦,因爲我都數不過來有多少行總共有,然後複製並粘貼每行分配變量並更改'VAR!'到'VAR2'和'1p'到'2p'。必須有一個更簡單的方法。由於

+0

喜歡[此](http://stackoverflow.com/questions/16414410/delete-empty-lines-using-sed)?我認爲你不需要使用適當的'sed'或'awk'或'grep'腳本來創建變量。 – JNevill

+0

很好,沒有因爲我需要每個變量與另一命令一起使用...... –

+0

在這種情況下,你會希望[通過文件循環(http://stackoverflow.com/questions/1521462/looping-through-在化內容的-A-文件中-的bash)。雖然你仍然可以使用'awk'來完成你想要的任何事情,但這是一個非常強大的程序。 – JNevill

回答

0

@JNevil感謝我指出了正確的方向。

下面有什麼最終爲我工作 -

for var_name in (cat links.txt); do 
    wget <servername.com>$var_name 
done 

仍然不知道如何使用捲曲,但這個工作得很好!

+0

[我如何逐行讀取文件(數據流,變量)?(http://mywiki.wooledge.org/BashFAQ/001) – chepner

相關問題