bash 脚本:为什么测试检查的不仅仅是完全匹配?

bash 脚本:为什么测试检查的不仅仅是完全匹配?

我正在尝试制作 HAL 9000。我有一个文件,其中包含电影中的“对话”,以及一个单词列表,其中包含 EEPROM 中的单词及其各自的内存位置,以及单词驻留在内存中的芯片。我编写了一个 bash 脚本,用于读取电影对话,并应输出内存地址和芯片。当单词长度超过一个字母时,它似乎有效。当单词为 1 个字母(即:i、a)时,它似乎会输出单词中找到该字母的每个实例。bash 脚本:

#!/bin/bash
#Read dialog get the word on a line, then find the memory location and chip it is on
#rec_column2 is the address in the chip for the word 
#cs=Chip Select, the value of rec_column3
#wordlist is the library xlsx converted via: for i  in *.xlsx; do  libreoffice --headless --convert-to csv "$i" ; done
#then put in all lower case because I don't know how to compare values that only differ by case
#command used: tr '[:upper:]' '[:lower:]' < input.csv > wordlist.csv
input="dialog"
while IFS= read -r line
do

while IFS="," read -r rec_column1 rec_column2 rec_column3 
do
if test "$line" = "$rec_column1"
    then
           echo "// " $line " , " $rec_column1 " :: " $rec_column2 ", " $rec_column3
           
           #echo "digitalWrite($rec_column3,LOW);"
           #echo "SPI.transfer($rec_column2);"
           #echo "digitalWrite($rec_column3,HIGH);"
           #echo "delay(850);"     
fi

done < wordlist.csv

done < $input

[不在库中的单词没有输出1

带有记忆位置的单词列表是这里. HAL 9000 的对话是这里. 所以,如果单词不止一个字母,脚本似乎可以正常工作。为什么它会针对每个包含该字母的单词检查单个字母?我该如何不这样做? 输出

相关内容