Je dois passer des données binaires à un programme bash qui accepte les arguments de ligne de commande. Y a-t-il un moyen de faire cela?
C'est un programme qui accepte un argument:
script arg1
Mais au lieu de la chaîne arg1
, j'aimerais passer des octets qui ne sont pas de bons caractères ASCII, en particulier les octets 0x02
, 0xc5
et 0xd8
.
Comment puis-je faire cela?
script "`printf "\x02\xc5\xd8"`"
script "`echo -e "\x02\xc5\xd8"`"
tester:
# echo -n "`echo -e "\x02\xc5\xd8"`" | hexdump -C
00000000 02 c5 d8 |...|
Utilisez le style de citation $''
:
script $'\x02\xc5\xd8'
Tester:
printf $'\x02\xc5\xd8' | hexdump -C
00000000 02 c5 d8
Bash n'est pas bon pour traiter des données binaires. Je recommanderais d'utiliser base64 pour l'encoder, puis le décoder à l'intérieur du script.
Édité pour donner un exemple:
script "$(printf '\x02\xc5\xd8' | base64 -)"
À l'intérieur du script:
var=$(base64 -d -i <<<"$1")
Que dis-tu de ça?
$ script "`printf "\x02\xc5\xd8"`"