Yanıtlar:
Deneyin:
$ printf '%s\n' "${FOO//$WORDTOREMOVE/}"
CATS DOGS FISH
Bu aynı zamanda çalışmak 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"
Kelimelerinizin alanla sınırlı olduğunu ve boşlukları önce ve sonra kaldıran yan etkiye sahip olduğunu varsayar "$WORDTOREMOVE"
.
Bash alt dize değiştirme kullanma:
FOO = $ {ÖRNEK // $ WORDTOREMOVE /}
//, alt dizenin ($ WORDTOREMOVE) tüm oluşumlarını / ve} arasındaki içerikle değiştirir. Bu durumda hiçbir şey.
Bu ve bash dizeleriyle çalışmanın diğer yolları hakkında bilgi için, bölüm 10.1'e bakın. Kurgulama Strings of Advanced Bash-Komut Rehberi .