Respostas:
Experimentar:
$ printf '%s\n' "${FOO//$WORDTOREMOVE/}"
CATS DOGS FISH
Isso também trabalhar em ksh93
, mksh
, zsh
.
POSIXAMENTE:
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"
Ele assume que suas palavras são delimitadas por espaço e tem efeito colateral que remove os espaços antes e depois "$WORDTOREMOVE"
.
Usando a substituição de substring do bash:
FOO = $ {FOO // $ WORDTOREMOVE /}
O // substitui todas as ocorrências da substring ($ WORDTOREMOVE) pelo conteúdo entre / e}. Neste caso, nada.
Para obter informações sobre essa e outras maneiras de trabalhar com seqüências de caracteres no bash, consulte a seção 10.1. Manipulando seqüências de caracteres do Guia avançado de script de bash .