Câu trả lời:
Thử:
$ printf '%s\n' "${FOO//$WORDTOREMOVE/}"
CATS DOGS FISH
Điều này cũng làm việc trong ksh93
, mksh
, zsh
.
VỊ TRÍ:
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"
Nó giả sử các từ của bạn được phân cách bằng dấu cách và có tác dụng phụ giúp loại bỏ khoảng trắng trước và sau "$WORDTOREMOVE"
.
Sử dụng thay thế chuỗi con bash:
FOO = $ {FOO // $ WORDTOREMISE /}
// thay thế tất cả các lần xuất hiện của chuỗi con ($ WORDTOREMOVE) bằng nội dung giữa / và}. Trong trường hợp này không có gì.
Để biết thông tin về điều này và các cách khác để làm việc với chuỗi trong bash, xem phần 10.1. Thao tác các chuỗi của Hướng dẫn Bash-Scripting nâng cao .