Antworten:
Versuchen:
$ printf '%s\n' "${FOO//$WORDTOREMOVE/}"
CATS DOGS FISH
Diese arbeiten auch 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"
Es wird davon ausgegangen, dass Ihre Wörter durch Leerzeichen getrennt sind und dass Leerzeichen davor und danach entfernt werden "$WORDTOREMOVE"
.
Verwenden des Ersetzens von Bash-Teilstrings:
FOO = $ {FOO // $ WORDTOREMOVE /}
Das // ersetzt alle Vorkommen der Teilzeichenfolge ($ WORDTOREMOVE) durch den Inhalt zwischen / und}. In diesem Fall nichts.
Informationen zu dieser und anderen Methoden zum Arbeiten mit Zeichenfolgen in Bash finden Sie in Abschnitt 10.1. Bearbeiten von Zeichenfolgen im Advanced Bash-Scripting Guide .