2013-04-30 74 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