Estoy buscando la solución más simple que requiera $*
como entrada, y se expande a cada elemento precedido y sufijado con una cadena dada:
$*=foo bar baz
<solution(x,y)>=xfooy xbary xbazy
Puedo anteponer o agregar, pero no ambos:
echo ${*/#/x}
# prints xfoo xbar xbaz
echo ${*/%/y}
# prints fooy bary bazy
No puedo combinar las dos soluciones. La documentación afirma que el valor devuelto por la expansión en el caso de parámetro=* es una lista, pero no puedo usarlo como tal. Quiero pasar la matriz de valores resultante a otro comando como argumentos separados, por lo tanto, simplemente construir una sola cadena no funcionaría.
Respuesta aceptada:
#!/bin/bash
echo $*
FIELDS=("${@/#/x}")
FIELDS=("${FIELDS[@]/%/y}")
echo "${FIELDS[*]}"
Cuando se ejecuta:
$ t.sh foo bar baz
foo bar baz
xfooy xbary xbazy