我有阵列:
declare -A server
server[172.16.170.1]='t1.com'
server[172.16.170.2]='t2.com'
server[172.16.170.3]='t3.com'
server[172.16.170.4]='t4.com'
server[172.16.170.5]='t5.com'
.....
我不想每次都写," t1,com,t2.com ......" 我想增加它 确定:
first=0
first=$(($first+1))
这是第一个元素。
first=0
first=$(($first+1))
declare -A server
server[172.16.170.1]='t$first.com'
server[172.16.170.2]='t$first.com'
server[172.16.170.3]='t$first.com'
server[172.16.170.4]='t$first.com'
server[172.16.170.5]='t$first.com'
.....
在输出中我们将:
server[172.16.170.1]=t1.com
server[172.16.170.2]=t1.com
server[172.16.170.3]=t1.com
server[172.16.170.4]=t1.com
server[172.16.170.5]=t1.com
.....
我知道,我们应该使用循环,但如果我有很多服务器,我应该如何使用循环"用于" ?使用我的所有数组变量?
答案 0 :(得分:2)
错过了一些事情,使用bash
中的算术运算符作为$((..))
和预增量运算符!在双引号下
first=0
declare -A server
server[172.16.170.1]="t$((++first)).com"
server[172.16.170.2]="t$((++first)).com"
server[172.16.170.3]="t$((++first)).com"
server[172.16.170.4]="t$((++first)).com"
server[172.16.170.5]="t$((++first)).com"
并且要打印关联数组,只需使用内置的declare
。
declare -p server
declare -A server='([172.16.170.1]="t1.com" [172.16.170.3]="t3.com" [172.16.170.2]="t2.com" [172.16.170.5]="t5.com" [172.16.170.4]="t4.com" )'
和for循环版本相同。这将在关联数组中使用 ONLY (使用declare -A array
)
count=0
for i in "${!server[@]}"; do
server["${i}"]="t$((++count)).com"
done
答案 1 :(得分:1)
这个怎么样:
declare -A server
for ((i=1; i<=5; i++))
do
server[172.16.170.$i]=t$i.com
done