Я пытаюсь сделать HAL 9000. У меня есть файл, который содержит "диалог" из фильма,
и список слов, в котором есть слова в EEPROM, в соответствующих ячейках памяти, и микросхемы, в которых слова находятся в памяти. Я написал bash-скрипт, который читает диалог фильма и должен выводить адреса памяти и чипы. Кажется, это работает, когда слова длиннее одной буквы.Когда слова состоят из 1 буквы (например: i, a), кажется, что выводятся все экземпляры, в которых буква встречается в слове. Баш-скрипт:
#!/бин/баш
#Чтение диалога получает слово в строке, затем находит место в памяти и микросхему, на которой оно находится
#rec_column2 — адрес в чипе для слова
#cs=Выбор чипа, значение rec_column3
#wordlist — это библиотека xlsx, преобразованная с помощью: for i in *.xlsx; сделать libreoffice --headless --convert-to csv "$i" ; сделано
#затем введите все строчные буквы, потому что я не знаю, как сравнивать значения, которые отличаются только регистром
#используемая команда: tr '[:upper:]' '[:lower:]' < input.csv > wordlist.csv
ввод = "диалог"
в то время как IFS= чтение строки -r
делать
в то время как IFS="," читать -r rec_column1 rec_column2 rec_column3
делать
если тест "$line" = "$rec_column1"
тогда
echo "// "$line", "$rec_column1" :: "$rec_column2", "$rec_column3
#echo "digitalWrite($rec_column3,LOW);"
#echo "SPI.transfer($rec_column2);"
#echo "digitalWrite($rec_column3,HIGH);"
#echo "задержка(850);"
фи
сделано < список слов.csv
сделано < $ ввод
[
Список слов с ячейками памяти здесь.
Диалоговое окно для HAL 9000 здесь.
Итак, опять же, в случае, если слово состоит из более чем одной буквы, сценарий, кажется, работает.
почему он проверяет отдельные буквы на каждое слово, содержащее эту букву? как мне этого не делать?