Risposte:
Provare:
$ printf '%s\n' "${FOO//$WORDTOREMOVE/}"
CATS DOGS FISH
Questo anche lavorare in ksh93
, mksh
, zsh
.
POSIXLY:
FOO="CATS DOGS FISH MICE"
WORDTOREMOVE="MICE"
remove_word() (
set -f
IFS=' '
s=$1
w=$2
set -- $1
for arg do
shift
[ "$arg" = "$w" ] && continue
set -- "$@" "$arg"
done
printf '%s\n' "$*"
)
remove_word "$FOO" "$WORDTOREMOVE"
Presuppone che le tue parole siano delimitate da spazi e abbia effetti collaterali che rimuovono gli spazi prima e dopo "$WORDTOREMOVE"
.
Usando la sostituzione della sottostringa bash:
FOO = $ {FOO // $ WORDTOREMOVE /}
// sostituisce tutte le occorrenze della sottostringa ($ WORDTOREMOVE) con il contenuto tra / e}. In questo caso niente.
Per informazioni su questo e altri modi per lavorare con le stringhe in bash, vedere la sezione 10.1. Manipolazione delle stringhe della Guida avanzata di script Bash .