Sto cercando la soluzione più semplice che prenda $*
come input e si espande a ogni elemento con prefisso e suffisso con una determinata stringa:
$*=foo bar baz
<solution(x,y)>=xfooy xbary xbazy
Posso anteporre o aggiungere, ma non entrambi:
echo ${*/#/x}
# prints xfoo xbar xbaz
echo ${*/%/y}
# prints fooy bary bazy
Non riesco a combinare le due soluzioni. La documentazione afferma che il valore restituito dall'espansione nel parametro parameter=* case è un elenco, ma non sono in grado di usarlo come tale. Voglio passare l'array di valori risultante a un ulteriore comando come argomenti separati, quindi la semplice creazione di una singola stringa non funzionerebbe.
Risposta accettata:
#!/bin/bash
echo $*
FIELDS=("${@/#/x}")
FIELDS=("${FIELDS[@]/%/y}")
echo "${FIELDS[*]}"
Quando eseguito:
$ t.sh foo bar baz
foo bar baz
xfooy xbary xbazy