Как получить двоичные представления строк в Shell?

Это кажется на желание задания крона. Большинство демонов крона не позволяет, поддерживают предложение, но Вы могли выполнять задание каждую минуту как корень с помощью чего-то как следующее в /etc/cron.d/encrypted-backup (принятие Вас хочет работать как корень):

* * * * * root rsync [...]
2
20.01.2015, 11:10
1 ответ

Вы не можете хранить двоичных данных данных (двоичные данные, как правило, относятся к данным с произвольными байтовыми значениями, не только значения байтов, которые являются действительными Персонажи, но не являются особенным иным образом) в Bash Переменные Bash Bash не поддерживают значение байта 0 в его переменных (и помните, что вы не можете пройти Такие строки в аргументах командам, как те, которые являются Nul разграничены строки).

Вы можете в ZSH , хотя. Также помните, что бруснические полосы под заместительными командами вытягивают новые символы Newline (0xa Bytes, возможно, отличаются на Cygwin), так что, вероятно, лучше использовать READ здесь:

$ echo 323 | openssl dgst -sha1 -binary | hd
00000000  3a 8b 03 4a 5d 00 e9 07  b2 9e 0a 61 b3 54 db 45  |:..J]......a.T.E|
00000010  63 4b 37 b0                                       |cK7.|
00000014

Смотрите, как это содержит как a 0 байт, так и новенький символ (0xa )

$ echo 323 | openssl dgst -sha1 -binary | IFS= LC_ALL=C read -ru0 -k20 var &&
  var=${var}World
$ printf %s $var | hd
00000000  3a 8b 03 4a 5d 00 e9 07  b2 9e 0a 61 b3 54 db 45  |:..J]......a.T.E|
00000010  63 4b 37 b0 57 6f 72 6c  64                       |cK7.World|
00000019

Обратите внимание, что вы можете пройти эту переменную для встроенных команд ( PrintF ...).

Теперь, если все, что вы хотите, это хэш снова, то это просто

(echo 323 | openssl dgst -sha1 -binary; printf %s World) |
  openssl dgst -sha1 -binary

Нет необходимости в переменной.

5
27.01.2020, 21:56

Теги

Похожие вопросы