Câu trả lời:
Chỉ cần chạy:
$ shopt extglob
Nó sẽ trả về trạng thái hiện tại:
$ shopt extglob
extglob on
$ shopt -u extglob
$ shopt extglob
extglob off
Để hiển thị tất cả các tùy chọn, chỉ cần chạy:
$ shopt
Sử dụng shopt -q :
shopt -q extglob && echo enable || echo disable
-q
tùy chọn thực hiện shopt
loại bỏ đầu ra và trả về trạng thái để chỉ ra rằng các tùy chọn được đặt hoặc bỏ đặt.
Lưu ý rằng shopt
chỉ báo cáo các tùy chọn có thể xuất hiện trong BASHOPTS
biến, các tùy chọn đó không hợp lệ với set
lệnh dựng sẵn.
Để kiểm tra các tùy chọn mà có giá trị đến set
, hoặc có thể xuất hiện trong SHELLOPTS
, sử dụng shopt -qo
:
$ bash --posix -c 'shopt -qo posix && echo enable || echo disable'
enable
shopt extglob
?
shopt extglob
và cách tiếp cận của bạn sẽ viết vào thiết bị xuất chuẩn. Bạn đang nghĩ đến shopt -q extglob && shopt -u extglob || shopt -s extglob
?
shopt -q extglob && : Code when enable || : Code when disable
.
Có hai danh sách các tùy chọn trong bash. Một cho shopt
và một cho set
.
Tùy chọn extglob
thuộc về shopt
danh sách.
Giá trị của nó có thể được in bằng cách sử dụng shopt extglob
hoặc shopt -p extglob
.
Một tùy chọn như nounset
thuộc về set
danh sách.
Giá trị của nó có thể được in bằng cách sử dụng shopt -op nounset
hoặc shopt -o nounset
.
Để in một tùy chọn cụ thể (không thay đổi) cho shopt, hãy sử dụng shopt -p name
:
$ shopt -p xpg_echo
shopt -u xpg_echo
Và cho set
, sử dụng: shopt -po name
(có, bạn có thể sử dụng shopt -op
cho set
danh sách).
$ shopt -po xtrace
set +o xtrace
Để liệt kê tất cả các tùy chọn từ shopt, sử dụng shopt
(hoặc tái sử dụng shopt -p
).
Ngoài ra shopt -s
hoặc shopt -u
có thể được sử dụng.
Cách để liệt kê tất cả các tùy chọn set
là với set -o
(liên quan set +o
:).
Hoặc: shopt -o
tương đương với set -o
và shopt -op
là set +o
.
Từ LESS=+/'^ *shopt \[' man bash
:
Không có tùy chọn hoặc với tùy chọn -p, một danh sách tất cả các tùy chọn có thể thiết lập được hiển thị, Nếu -s hoặc -u được sử dụng mà không có đối số optname, màn hình được giới hạn tương ứng với các tùy chọn được đặt hoặc bỏ đặt.
Từ LESS=+/'^ *set \[' man bash
:
Nếu -o được cung cấp không có tên tùy chọn, các giá trị của các tùy chọn hiện tại sẽ được in. Nếu + o được cung cấp không có tên tùy chọn, một loạt các lệnh được đặt để tạo lại cài đặt tùy chọn hiện tại được hiển thị trên đầu ra tiêu chuẩn.
$ set -o
allexport off
braceexpand on
emacs on
errexit off
errtrace off
functrace off
hashall on
histexpand on
history on
ignoreeof off
interactive-comments on
keyword off
monitor on
noclobber off
noexec off
noglob off
nolog off
notify off
nounset off
onecmd off
physical off
pipefail off
posix off
privileged off
verbose off
vi off
xtrace off
Và
$ shopt -sp
shopt -s checkwinsize
shopt -s cmdhist
shopt -s expand_aliases
shopt -s extglob
shopt -s extquote
shopt -s force_fignore
shopt -s histappend
shopt -s histverify
shopt -s interactive_comments
shopt -s progcomp
shopt -s promptvars
shopt -s sourcepath
Điều đáng nói là shopt -op
cái nào thực sự liệt kê set
các tùy chọn:
$ shopt -op
set +o allexport
set -o braceexpand
set -o emacs
set +o errexit
set +o errtrace
set +o functrace
set -o hashall
set -o histexpand
set -o history
set +o ignoreeof
set -o interactive-comments
set +o keyword
set -o monitor
set +o noclobber
set +o noexec
set +o noglob
set +o nolog
set +o notify
set +o nounset
set +o onecmd
set +o physical
set +o pipefail
set +o posix
set +o privileged
set +o verbose
set +o vi
set +o xtrace
shopt -s extglob
hoặc, nếu bạn muốn nó tắt, chạyshopt -u extglob
. Nó không tạo ra bất kỳ sự khác biệt nào nếu nó ban đầu hay không.