Mon copain a demandé cela avant sur l'unix SE, mais il a demandé tort. Il n'a pas obtenu de réponse utile non plus.Echo texte différent par lettre d'une variable définie dans bash
Quoi qu'il en soit, j'essaie de faire en sorte que mon script bash traite chaque caractère dans une variable et fasse écho à une certaine chaîne par lettre jusqu'à ce qu'elle atteigne la dernière. Voici ce que j'ai jusqu'à présent:
#!/bin/bash
echo Word?
read -r -p '' foo
# $foo is set to 'Mammals and Bricks' by user.
wordlength=${#foo}
$wordlength says 18, so start on character 1.
'M' is first letter received in $foo, so echo '{m,M}'
'a' is second letter received in $foo, so echo '{a,A}'
'm' is third letter received in $foo, so echo '{m,M}'
'm' is fourth letter received in $foo, so echo '{m,M}'
'a' is the fifth letter received in $foo, so echo '{a,A}'
'l' is the sixth letter received in $foo, so echo '{l,L}'
's' is the seventh letter received in foo, so echo '{s,S}'
' ' is the eighth, so echo '\ '
........
'c' is sixteenth letter received in $foo, so echo '{c,C}'
'k' is seventeenth letter received in $foo, so echo '{k,K}'
's' is eighteenth letter received in $foo, so echo '{s,S}'
Et voici ce qu'il ressemblerait à la fin de l'utilisateur:
Word?
Mammifères et Briques
{m,M}{a,A}{m,M}{m,M}{a,A}{l,L}{s,S} {a,A}{n,N}{d,D} {b,B}{r,R}{i,I}{c,C}{k,K}{s,S}
Quel est ce qu'il sortie exactement. Vous verriez tout ce qui précède en caractères bruts.
Quelqu'un sait-il comment faire?
Hmm ... Quand je lance que ma sortie ressemble à ceci: '{Lm iM} {la, ua} {lm , um} {lm, um} {la, ua} {ll, ul} {ls, nous} {la, ua} {ln, un} {ld, ud} {lB, uB} {lr, ur} {li , ui} {lc, uc} {lk, uk} {ls, nous} '. J'utilise OS X Yosemite btw – leetbacoon
Alors vous utilisez probablement un sed classique, pas GNU sed (notez que GNU sed est probablement disponible sur OSX). J'ai ajouté une solution en bash pur. – xhienne
@xhienne Malheureusement, les constructions '$ {var,}' et '$ {var ^}' ont été ajoutées dans bash v4, mais macOS n'est fourni qu'avec bash v3.2.57. (C'est parce que bash v4 est sous licence GPL v3, ce que Apple ne veut pas se conformer.) –