Bash脚本从文件读取并将信息保存在数组中?

时间:2019-01-31 12:40:22

标签: bash shell

我想从写有主机IP的文件中读取并将其保存在阵列中。到目前为止,我已经尝试过:

Host=`cat /home/hp3385/Desktop/config | egrep '^Host' | awk '{print $2}'`

但是我不认为它将信息保存在一个数组中。变量“主机”的类型是什么?如果不是数组,如何将其转换为一个数组? 这是来自文件/home/hp3385/Desktop/config的示例数据:

############# Server1 #################
Host 8.8.8.8
Hostname google

############# Server2 ################
Host 8.8.4.4
Hostname google

预期输出为: a=($'8.8.8.8' $'8.8.4.4')

2 个答案:

答案 0 :(得分:1)

您可以尝试

myarray=()
while read -r line; do
  if echo "$line" | grep -q 'Host '; then
     myarray+=($(echo "$line" | awk '/^Host/ {print $2}'))
  fi
done < /home/hp3385/Desktop/config 

答案 1 :(得分:1)

声明数组:

ARRAY=(0 1 2 3 4 5)

因此可以这样声明数组:

HOSTS=($(awk '/^Host/ {print $2}' YOUR_FILE))

如果您想知道数组中值的数量:

echo ${#HOSTS[*]}

要获取数组中所有值的输出(贷记到triplee):

printf '%s\n' "${HOSTS[@]}"