Je voudrais lire uniquement les 8 premiers caractères d'un fichier texte et l'enregistrer dans une variable en bash. Existe-t-il un moyen de le faire en utilisant simplement bash?
Vous pouvez demander à head
de lire un certain nombre d'octets. Pour votre cas particulier:
$ head -c 8 <file>
Ou dans une variable:
foo=$(head -c 8 <file>)
en bash
help read
vous verrez que vous pouvez:
read -r -n 8 variable < .the/file
Si vous voulez lire les 8 premiers, indépendamment des séparateurs,
IFS= read -r -n 8 variable < .the/file
Mais évitez d'utiliser
.... | while IFS= read -r -n 8 variable
comme, en bash, les parties après un "|" sont exécutés dans un sous-shell: "variable" ne serait modifié que dans ce sous-shell, et sa nouvelle valeur est perdue lors de la recapture du shell actuel.
Vous pouvez utiliser un tableau en bash et sélectionner uniquement les premiers caractères. Le guide Advanced Bash Scripting contient de bons exemples d'utilisation des tableaux.