$*
を使用する最も簡単なソリューションを探しています 入力として、指定された文字列のプレフィックスとサフィックスが付いた各要素に展開されます:
$*=foo bar baz
<solution(x,y)>=xfooy xbary xbazy
付加または付加のいずれかを実行できますが、両方を実行することはできません:
echo ${*/#/x}
# prints xfoo xbar xbaz
echo ${*/%/y}
# prints fooy bary bazy
2つのソリューションを組み合わせることができません。ドキュメントには、parameter =*の場合の展開によって返される値はリストであると記載されていますが、そのように使用することはできません。結果の値の配列を個別の拡張機能として別のコマンドに渡したいので、単一の文字列を作成するだけでは機能しません。
承認された回答:
#!/bin/bash
echo $*
FIELDS=("${@/#/x}")
FIELDS=("${FIELDS[@]/%/y}")
echo "${FIELDS[*]}"
実行時:
$ t.sh foo bar baz
foo bar baz
xfooy xbary xbazy