我创建关联数组,例如
declare -A vars=(["Test array here"]="POOLING TESTPOOL ")
我有一个有多行的文件,想和数组值进行比较,如果匹配,打印数组键。我试过这个,但它不起作用
match="POOLING TESTPOOL"
for key in "${vars[@]}"; do [[ $key = "$match" ]] && printf '%sn' "${!vars[$key]}" ; done
我还尝试了glob
for key in "${vars[@]}"; do [[ $key = *"$match"* ]] && printf '%sn' "${!vars[$key]}" ; done
但每次我得到空字符串
因此,如果您想要cat文件并将字符串与关联数组值进行比较并打印其密钥,您可以使用这个嵌套循环
for i in `cat file.txt`; do for key in "${!vars[@]}"; do if [[ ${vars[$key]} == *"$i"* ]]; then echo $key fi done done
感谢@Fravadona为我点赞。