我正在尝试制作 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
[
带有记忆位置的单词列表是这里. HAL 9000 的对话是这里. 所以,如果单词不止一个字母,脚本似乎可以正常工作。为什么它会针对每个包含该字母的单词检查单个字母?我该如何不这样做?