Je cherche la solution la plus simple qui prend $*
en entrée, et se développe à chaque élément préfixé et suffixé avec une chaîne donnée :
$*=foo bar baz
<solution(x,y)>=xfooy xbary xbazy
Je peux soit préfixer soit ajouter, mais pas les deux :
echo ${*/#/x}
# prints xfoo xbar xbaz
echo ${*/%/y}
# prints fooy bary bazy
Je n'arrive pas à combiner les deux solutions. La documentation affirme que la valeur renvoyée par l'expansion dans le cas de parameter=* est une liste, mais je ne peux pas l'utiliser en tant que telle. Je souhaite transmettre le tableau de valeurs résultant à une autre commande en tant qu'arguments séparés. Par conséquent, la simple construction d'une seule chaîne ne fonctionnerait pas.
Réponse acceptée :
#!/bin/bash
echo $*
FIELDS=("${@/#/x}")
FIELDS=("${FIELDS[@]/%/y}")
echo "${FIELDS[*]}"
Lors de l'exécution :
$ t.sh foo bar baz
foo bar baz
xfooy xbary xbazy