Încerc să fac HAL 9000. Am un fișier care conține „dialog” din film,
și o listă de cuvinte care conține cuvinte în EEPROM, în locațiile lor de memorie respective și cipuri în care cuvintele se află în memorie. Am scris un script bash care citește dialogul filmului și ar trebui să scoată adresele de memorie și cipurile. Se pare că funcționează atunci când cuvintele sunt mai lungi de o literă.Când cuvintele au o literă (adică: i, a), se pare că iese fiecare caz în care litera se găsește într-un cuvânt. Scriptul bash:
#!/bin/bash
#Read dialog obține cuvântul pe o linie, apoi găsește locația de memorie și cip este pornit
#rec_column2 este adresa din cip pentru cuvânt
#cs=Chip Select, valoarea lui rec_column3
#wordlist este biblioteca xlsx convertită prin: for i în *.xlsx; do libreoffice --headless --convert-to csv "$i" ; Terminat
#apoi pune toate litere mici pentru că nu știu cum să compar valori care diferă doar după caz
#comandă folosită: tr '[:upper:]' '[:lower:]' < input.csv > wordlist.csv
input="dialog"
în timp ce IFS= citește linia -r
do
în timp ce IFS="," citește -r rec_column1 rec_column2 rec_column3
do
dacă testul „$line” = „$rec_column1”
atunci
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
facut < lista de cuvinte.csv
terminat < $input
[
Lista de cuvinte, cu locații de memorie este Aici.
Dialogul pentru HAL 9000 este Aici.
așa că din nou, în cazul în care cuvântul are mai mult de o literă, scenariul pare să funcționeze.
de ce verifică literele individuale față de fiecare cuvânt care conține acea literă? cum sa nu fac asta?