Обратите внимание, что нет необходимости проверять, если вам не интересно. Если хотите, просто запустите shopt -s extglobили, если хотите, запустите shopt -u extglob. Не имеет никакого значения, был ли он изначально или нет.
Тердон
Ответы:
15
Просто беги:
$ shopt extglob
Он вернет текущий статус:
$ shopt extglob
extglob on
$ shopt -u extglob
$ shopt extglob
extglob off
Этот также может быть использован для сценариев, его возвращаемый статус также указывает на установленный или не установленный параметр, но стандартное сообщение будет сбиваться.
-qопция сделать shoptсброс вывода и вернуть статус, чтобы указать, что опции установлены или не установлены.
Обратите внимание, что shoptтолько параметры отчетов, которые могут отображаться в BASHOPTSпеременной, эти параметры недопустимы для setвстроенной команды.
Чтобы проверить параметры, которые действительны setили могут отображаться SHELLOPTS, используйте shopt -qo:
Что вы имеете в виду? Насколько я могу судить, OP хочет проверить, установлена эта опция или нет. Они упоминают, что это в терминале, поэтому я сомневаюсь, что это часть сценария. И вообще, какая разница? Оба shopt extglobи ваш подход напишет в stdout. Вы думаете о shopt -q extglob && shopt -u extglob || shopt -s extglob?
Terdon
@terdon: Ну, мой подход, только пишите в stdout, если я хочу . Общий подход есть shopt -q extglob && : Code when enable || : Code when disable.
cuonglm
3
Я могу представить себе написание сценария, который попытался бы сохранить существующие настройки пользователя, но мог бы содержать критический фрагмент кода, который сломается, если не будет задан конкретный путь. Это предлагает метод для тихого определения текущего состояния, его сохранения и восстановления как можно скорее после выполнения важных операций, которые требуют потенциально другого состояния.
Монти Хардер
5
В 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 xtraceset+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 -s extglob
или, если хотите, запуститеshopt -u extglob
. Не имеет никакого значения, был ли он изначально или нет.Ответы:
Просто беги:
Он вернет текущий статус:
Чтобы показать все параметры, просто запустите:
источник
Используйте shopt -q :
-q
опция сделатьshopt
сброс вывода и вернуть статус, чтобы указать, что опции установлены или не установлены.Обратите внимание, что
shopt
только параметры отчетов, которые могут отображаться вBASHOPTS
переменной, эти параметры недопустимы дляset
встроенной команды.Чтобы проверить параметры, которые действительны
set
или могут отображатьсяSHELLOPTS
, используйтеshopt -qo
:источник
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
:И для
set
, используйте:shopt -po name
(да, вы можете использоватьshopt -op
дляset
списка).Список вариантов.
Чтобы перечислить все варианты из магазина, используйте
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
:От
LESS=+/'^ *set \[' man bash
:Примеры
А также
Стоит упомянуть о том,
shopt -op
какие на самом деле перечисленыset
варианты:источник