bash3.x不支持关联数组(associative arrays)结构,只支持用数值作数组索引,如
1
2
3
|
declare
-
a
Myarray
Myarray
[
1
]
=”
www
.
ttlsa
.
com”
Myarray
[
2
]
=”
39514058”
|
bash4.x支持关联数组结构,如
1
2
3
|
declare
-
A
Myarray
Myarray
[
'website'
]
=”
www
.
ttlsa
.
com”
Myarray
[
'QQqun'
]
=”
39514058”
|
支持关联数组结构,将大大方便定义变量,更好的写出方便简洁的代码。简单就是美。
我工作中看到一推if...elsif...else语句,十多个判断,眼睛都看花了,修改起来也不方便。顺便改了下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#!/bin/bash
#
ftpserver
=
(
"121.207.242:ftpserver1.backup.xx.com"
"121.207.240:ftpserver2.backup.xx.com"
"121.207.250:ftpserver3.backup.xx.com"
)
function
process_array
(
)
{
declare
-
a
hash
=
(
"${!1}"
)
key
=
"${2}"
for
ftpsrv
in
"${hash[@]}"
;
do
# key: ${ftpsrv%%:*}
# value: ${ftpsrv##*:}
if
[
$
key
=
$
{
ftpsrv
%
%
:
*
}
]
;
then
ftpserver
=
$
{
ftpsrv
#*:}
echo
$
ftpserver
fi
done
}
ftp_s
=
$
(
process_array
ftpserver
[
@
]
"121.207.250"
)
echo
$
ftp_s
|
说明下,"121.207.242:ftpserver1.backup.xx.com",':'前面是key,后面是value,不同的IP段对应不同的ftp地址。没有全部把if...elsif...else语句条件罗列到变量ftpserver。要添加更改相关信息,只需更改ftpserver变量即可。
如需转载请注明出处:bash3与bash4数组结构 http://www.ttlsa.com/html/1925.html
收 藏
转载请注明:成长的对话 » bash3与bash4数组结构