Hledám nejjednodušší řešení, které zabere $*
jako vstup a expanduje na každý prvek s předponou a příponou s daným řetězcem:
$*=foo bar baz
<solution(x,y)>=xfooy xbary xbazy
Mohu provést buď předřazení nebo připojení, ale ne obojí:
echo ${*/#/x}
# prints xfoo xbar xbaz
echo ${*/%/y}
# prints fooy bary bazy
Nemohu obě řešení zkombinovat. Dokumentace tvrdí, že hodnota vrácená rozšířením v případě parametru =* je seznam, ale nemohu ji jako takovou použít. Chci předat výsledné pole hodnot dalšímu příkazu jako samostatné argumenty, proto by jednoduché vytvoření jediného řetězce nefungovalo.
Přijatá odpověď:
#!/bin/bash
echo $*
FIELDS=("${@/#/x}")
FIELDS=("${FIELDS[@]/%/y}")
echo "${FIELDS[*]}"
Při spuštění:
$ t.sh foo bar baz
foo bar baz
xfooy xbary xbazy
Linux – Webp Animation To Gif Animation (cli)?
Jak najít příčinu posunu hodin na vlastním vestavěném systému?