Ответ 1
script "`printf "\x02\xc5\xd8"`"
script "`echo -e "\x02\xc5\xd8"`"
Тест:
# echo -n "`echo -e "\x02\xc5\xd8"`" | hexdump -C
00000000 02 c5 d8 |...|
Мне нужно передать двоичные данные в программу bash, которая принимает аргументы командной строки. Есть ли способ сделать это?
Это программа, которая принимает один аргумент:
script arg1
Но вместо строки arg1
я бы хотел передать несколько байтов, которые не являются хорошими символами ASCII, в частности, байты 0x02
, 0xc5
и 0xd8
.
Как это сделать?
script "`printf "\x02\xc5\xd8"`"
script "`echo -e "\x02\xc5\xd8"`"
Тест:
# echo -n "`echo -e "\x02\xc5\xd8"`" | hexdump -C
00000000 02 c5 d8 |...|
Используйте стиль цитаты $''
:
script $'\x02\xc5\xd8'
Тест:
printf $'\x02\xc5\xd8' | hexdump -C
00000000 02 c5 d8
Bash не подходит для обработки двоичных данных. Я бы рекомендовал использовать base64 для его кодирования, а затем декодировать его внутри script.
Отредактировано, чтобы предоставить пример:
script "$(printf '\x02\xc5\xd8' | base64 -)"
Внутри script:
var=$(base64 -d -i <<<"$1")
Как насчет этого?
$ script "`printf "\x02\xc5\xd8"`"
Сохраните свои двоичные данные в файле, а затем выполните:
script "`cat file`"