我想从写有主机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')
答案 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[@]}"