Несогласованное количество байтов, прочитанных bash из входного потокаLinux

Ответить Пред. темаСлед. тема
Anonymous
 Несогласованное количество байтов, прочитанных bash из входного потока

Сообщение Anonymous »

Код: Выделить всё

~ $ data=$(sudo cat /dev/input/event5 | ( IFS= read -d '' -r -N 16 data && echo "$data" ))
~ $ printf "$data" | xxd -p
48b80a662ecf0b02010148b80a662ecf0b48
~ $ data=$(sudo cat /dev/input/event5 | ( IFS= read -d '' -r -N 16 data && echo "$data" ))
~ $ printf "$data" | xxd -p
94b80a667d6501020194b80a667d6501
~ $ data=$(sudo cat /dev/input/event5 | ( IFS= read -d '' -r -N 16 data && echo "$data" ))
~ $ printf "$data" | xxd -p
a0b80a6618e90a01100101a0b80a6618e9
~ $ data=$(sudo cat /dev/input/event5 | ( IFS= read -d '' -r -N 16 data && echo "$data" ))
~ $ printf "$data" | xxd -p
8fb90a66675d07011001018fb90a6667
~ $ data=$(sudo cat /dev/input/event5 | ( IFS= read -d '' -r -N 16 data && echo "$data" ))
~ $ printf "$data" | xxd -p
54ba0a66a9a7070110010154ba0a66a9
~ $ data=$(sudo cat /dev/input/event5 | ( IFS= read -d '' -r -N 16 data && echo "$data" ))
~ $ printf "$data" | xxd -p
6aba0a66ce770302016aba0a66ce77036aba
Что не так с моим ожиданием, что $data должна всегда иметь длину 16 байт?
То же самое с запросом клавиатуры вместо мыши:

Код: Выделить всё

~ $ data=$(sudo cat /dev/input/event3 | ( IFS= read -d '' -r -N 16 data && echo "$data" ))
b~ $printf "$data" | xxd -p
4ebf0a66e14d0404041c4ebf0a66e14d0401
~ $ data=$(sudo cat /dev/input/event3 | ( IFS= read -d '' -r -N 16 data && echo "$data" ))
4~ $printf "$data" | xxd -p
79bf0a66e0db0504041c79bf0a66e0db0501
~ $ data=$(sudo cat /dev/input/event3 | ( IFS= read -d '' -r -N 16 data && echo "$data" ))
5~ $printf "$data" | xxd -p
85bf0a66eee20804041c85bf0a66eee20801
~ $ data=$(sudo cat /dev/input/event3 | ( IFS= read -d '' -r -N 16 data && echo "$data" ))
9~ $printf "$data" | xxd -p
96bf0a6675fd0404041c96bf0a6675fd0401
~ $ data=$(sudo cat /dev/input/event3 | ( IFS= read -d '' -r -N 16 data && echo "$data" ))
a~ $
~ $ printf "$data" | xxd -p
a6bf0a66e6810604041ca6bf0a66e68106011ca6
~ $ data=$(sudo cat /dev/input/event3 | ( IFS= read -d '' -r -N 16 data && echo "$data" ))
a~ $printf "$data" | xxd -p
dfbf0a664bca0204041cdfbf0a664bca02011cdfbf
~ $ data=$(sudo cat /dev/input/event3 | ( IFS= read -d '' -r -N 16 data && echo "$data" ))
1~ $printf "$data" | xxd -p
f5bf0a668e720904041cf5bf0a668e7209011cf5bf
~ $ data=$(sudo cat /dev/input/event3 | ( IFS= read -d '' -r -N 16 data && echo "$data" ))
~ $printf "$data" | xxd -p
0ac00a667a7c0a04041c0ac00a667a7c
Проблема не в том, что было предложено другими ответами по этому вопросу здесь, в stackoverflow, что в результате хранения двоичной строки в переменной меньше байтов, поскольку переменные bash не могут содержать нули, байт, но есть и больше...

Подробнее здесь: https://stackoverflow.com/questions/782 ... put-stream
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Linux»