2013-04-30 43 views
0

我有一個.txt文件,其中包含加載列表從文本文件bash腳本

abc.com 
google.com 
.... 
.... 
yahoo.com 

而且我很感興趣,它加載到一個bash腳本的列表(即Domain_List=("abc.com" "google.com" .... "yahoo.com"))。有可能嗎?

附加信息,一旦獲得列表,將用於for循環和if語句。

for i in "${Domain_list[@]} 
do 
    if grep -q "${Domain_list[counter]}" domains.log 
    .... 
    .... 
    fi 
.... 
    let counter=counter+1 
done 

謝謝

更新: 我已經改變了格式DOMAIN_LIST =(「google.com ...... 「yahoo.com」),並使用source Doamin.txt允許我使用Domain_list作爲

#!/bin/bash 

counter=0 
source domain.txt 
for i in "${domain_list[@]}" 
do 
    echo "${domain_list[counter]}" 
    let counter=counter+1 
done 
echo "$counter" 
+2

你的問題已經回答了前: http://stackoverflow.com/questions/1688999/how-can-i-read-a-list-of-filenames-from-a-file -in-bash – Bill 2013-04-30 16:59:36

回答

1

我使用了source命令,它工作正常。

#!/bin/bash 

counter=0 
source domain.txt 
for i in "${domain_list[@]}" 
do 
    echo "${domain_list[counter]}" 
    let counter=counter+1 
done 
echo "$counter" 
+0

這個很簡單,可以用於其他類型的文件,例如.properties文件。 – 2015-07-20 15:16:05

1
Domain_list=() 
while read addr 
do 
    Domain_list+=($addr) 
done < addresses.txt 

這應該存儲文本文件到陣列的每一行。

在bash腳本列表。
+0

謝謝你的回答,但是一個簡單的問題是,在我實現它的方式和你的方式之間是否有區別(如腳本如何存儲它)? – 2013-04-30 17:22:53

2

假設您的數據文件名是web.txt。使用命令替換(backtics)和cat,可以構建數組。 PL。看下面的代碼,

myarray=(`cat web.txt`) 
noofelements=${#myarray[*]} 
#now traverse the array 
counter=0 
while [ $counter -lt $noofelements ] 
do 
    echo " Element $counter is ${myarray[$counter]}" 
    counter=$(($counter + 1)) 

done