Ответы:
Просто беги:
$ shopt extglob
Он вернет текущий статус:
$ shopt extglob
extglob on
$ shopt -u extglob
$ shopt extglob
extglob off
Чтобы показать все параметры, просто запустите:
$ shopt
Используйте shopt -q :
shopt -q extglob && echo enable || echo disable
-qопция сделать shoptсброс вывода и вернуть статус, чтобы указать, что опции установлены или не установлены.
Обратите внимание, что shoptтолько параметры отчетов, которые могут отображаться в BASHOPTSпеременной, эти параметры недопустимы для setвстроенной команды.
Чтобы проверить параметры, которые действительны setили могут отображаться SHELLOPTS, используйте shopt -qo:
$ bash --posix -c 'shopt -qo posix && echo enable || echo disable'
enable
shopt extglob?
shopt extglobи ваш подход напишет в stdout. Вы думаете о shopt -q extglob && shopt -u extglob || shopt -s extglob?
shopt -q extglob && : Code when enable || : Code when disable.
В bash есть два списка опций. Один за shoptи один за set.
Опция extglobпринадлежит shoptсписку.
Его значение может быть напечатано с использованием либо shopt extglobили shopt -p extglob.
Опция вроде nounsetпринадлежит к setсписку.
Его значение может быть напечатано с помощью shopt -op nounsetили shopt -o nounset.
Чтобы напечатать определенный параметр (не изменяя его) для покупок, используйте shopt -p name:
$ shopt -p xpg_echo
shopt -u xpg_echo
И для set, используйте: shopt -po name(да, вы можете использовать shopt -opдля setсписка).
$ shopt -po xtrace
set +o xtrace
Чтобы перечислить все варианты из магазина, используйте shopt(или многоразовые shopt -p).
Также shopt -sили shopt -uможет быть использован.
Список всех опций можно setнайти с помощью set -o(related:) set +o.
Или: shopt -oэквивалентно set -oи shopt -opесть set +o.
От LESS=+/'^ *shopt \[' man bash:
Без параметров или с параметром -p отображается список всех настраиваемых параметров. Если -s или -u используется без аргументов optname, отображение ограничивается теми параметрами, которые установлены или не установлены соответственно.
От LESS=+/'^ *set \[' man bash:
Если -o указан без имени опции, будут напечатаны значения текущих опций. Если + o указан без имени опции, серия стандартных команд для воссоздания текущих настроек опции отображается на стандартном выводе.
$ 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
А также
$ 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
Стоит упомянуть о том, shopt -opкакие на самом деле перечислены setварианты:
$ 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или, если хотите, запуститеshopt -u extglob. Не имеет никакого значения, был ли он изначально или нет.