从文件中提取字符串,并将其与关联bash数组进行比较



我创建关联数组,例如

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为我点赞。