この関数f()
は非常に単純なはずですが、不可解な方法で機能します。
f() {
a=(cyan red green blue orange violet)
shopt -s extglob
echo 1: -${a[@]/!($1)}-
echo 2: -${a[@]/!($1)/}-
echo 3: -${a[@]/!("$1")/}-
echo 4: -"${a[@]/!($1)/}"-
echo 5: -${a[@]/!($1)/x}-
}
echo ORANGE
f orange # ends in e like blue
echo YELLOW
f yellow
出力は次のとおりです(空白/スペースにも注意してください):
ORANGE
1: - e -
2: - e -
3: - e -
4: - e -
5: -x x x x xe x-
YELLOW
1: - -
2: - -
3: - -
4: - -
5: -x x x x x x-
なぜ求められる言葉の最後の文字だけ?! (この場合e
)orange
期待される出力はorange
、単なるものではなくe
注: また、空白が1 つある場所には、空白がないことも期待できます。