Во-первых, выпуск RC2 является кандидатом на выпуск установщика , а не всего выпуска.
Теперь каждая строка означает следующее:
Число, которое должно быть как можно меньше до выпуска i последний. Его можно уменьшить, исправляя ошибки, игнорируя ошибки или удаляя пакеты из выпуска.
Полная честь @steeldriver за то, что он предположил, что это проблема с завершением строки возврата каретки, и дань уважения @AlexP за предложение hexdump
как способ проверки теории.
Проблема в том, что строка, возвращаемая arduino-serial, имела завершающий '\ r \ n' (он же 0x0d 0x0a), о чем свидетельствует hexdump:
echo "$VERS" | hexdump -C
00000000 30 30 2e 30 31 0d 0a |00.01..|
Одно из возможных исправлений, которое я выбрал, - это конвейерная передача результаты через tr -c '\ r'
для удаления возвращаемого символа, поэтому результирующий скрипт выглядит следующим образом:
#!/bin/bash
ARDUINO_SERIAL=arduino-serial/arduino-serial
PORT="/dev/cu.usbmodem1421"
VERS=$($ARDUINO_SERIAL -q -b 9600 -p $PORT -S 'V' -e '\r' -r | tr -d '\r')
echo --- VERS = $VERS
B="hello${VERS}goodbye"
echo --- B = $B
, который печатает как ожидалось:
--- VERS = 00.01
--- B = hello00.01goodbye