从文本文件加载列表到Bash脚本

时间:2013-04-30 16:53:44

标签: bash list text-files

我有一个包含

.txt文件
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允许我在bash脚本中使用Domain_list作为列表。< / p>

#!/bin/bash

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

4 个答案:

答案 0 :(得分:2)

假设您的数据文件名是web.txt。使用命令替换(反引号)和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

答案 1 :(得分:1)

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

那应该将文本文件的每一行存储到数组中。

答案 2 :(得分: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"

答案 3 :(得分:0)

如果我们从文件中获取列表,则无需计数器。您可以简单地遍历列表并回显值。

#!/bin/bash

source domain.txt
for i in ${domain_list[@]}
do
   echo $i
done