Ste*_*eve 5 arrays bash associative-array
目标:
我想做的就是检查关联数组USER_PARAMETERS_KEYs[j]中是否存在a RPM_PARAMETERS_HASH
。我有一个数组和一个关联数组,如下所示:
预定义:
declare -a USER_PARAMETERS_KEYS='([0]="userField" [1]="fUserField" [2]="srcIPField" [3]="srcPortField" [4]="dstIPField" [5]="dstPortField" [6]="dateField" [7]="timeField")'
declare -A RPM_PARAMETERS_HASH='([timeField]="Time" [userField]="User-Name" [dstIPField]="" [srcIPField]="Source-IP-Address" [dstPortField]="Target-UDP-Port" [fUserField]="Full-Name" [dateField]="Date" [srcPortField]="Source-UDP-Port" )'
Run Code Online (Sandbox Code Playgroud)
我实施了以下措施:
if [[ ${RPM_PARAMETERS_HASH[${USER_PARAMETERS_KEYS[j]}]} ]] ; then
Run Code Online (Sandbox Code Playgroud)
问题
我的问题是当${USER_PARAMETERS_KEYS[j]}变得等于时dstIPField,因为它在关联数组中有一个空字符串值,所以尽管键在那里,但不满足 if 条件。
使用 bash 你可以使用-v选项[[:
[[ -v RPM_PARAMETERS_HASH["${USER_PARAMETERS_KEYS[j]}"] ]]
Run Code Online (Sandbox Code Playgroud)