Comment savoir si extglob est activé dans la session bash actuelle?
9
J'ai un terminal bash ouvert. Je veux savoir si l'option extglob est activée ou désactivée dans cette session, avant de modifier sa valeur. Comment puis-je faire ceci?
Notez qu'il n'est pas nécessaire de vérifier, sauf si vous êtes curieux. Si vous le souhaitez, lancez-le shopt -s extglobou, si vous le souhaitez, exécutez-le shopt -u extglob. Cela ne fait aucune différence que ce soit à l'origine ou non.
terdon
Réponses:
15
Exécutez simplement:
$ shopt extglob
Il renverra l'état actuel:
$ shopt extglob
extglob on
$ shopt -u extglob
$ shopt extglob
extglob off
Pour afficher toutes les options, lancez simplement:
Celui-ci peut également être utilisé pour les scripts, son état de retour indique également l'option définie ou non définie, mais le message gâchera la norme.
-qoption shoptannule la sortie et renvoie l'état pour indiquer que les options sont définies ou désactivées.
Notez que shoptseules les options de rapports qui peuvent apparaître en BASHOPTSvariable, ces options ne sont pas valides pour la setcommande intégrée.
Pour vérifier les options valides setou pouvant apparaître dans SHELLOPTS, utilisez shopt -qo:
Que voulez-vous dire? Autant que je sache, l'OP veut vérifier si l'option est définie ou non. Ils mentionnent que c'est dans un terminal, donc je doute que cela fasse partie d'un script. Et de toute façon, quelle est la différence? Les deux shopt extglobet votre approche écriront sur stdout. Pensez-vous shopt -q extglob && shopt -u extglob || shopt -s extglob?
terdon
@terdon: Eh bien, mon approche n'écrit à stdout que si je veux . L'approche générale est shopt -q extglob && : Code when enable || : Code when disable.
cuonglm
3
Je peux imaginer écrire un script qui tenterait de préserver le paramètre existant de l'utilisateur, mais pourrait avoir un bit de code critique qui se briserait s'il n'était pas défini d'une manière particulière. Cela suggère une méthode pour déterminer silencieusement l'état actuel, l'enregistrer et le restaurer dès que possible après avoir effectué les opérations cruciales qui nécessitent un état potentiellement différent.
Monty Harder
5
Il y a deux listes d'options dans bash. Un pour shoptet un pour set.
L'option extglobappartient à la shoptliste.
Sa valeur peut être imprimée en utilisant soit shopt extglobou shopt -p extglob.
Une option comme nounsetappartient à la setliste.
Sa valeur peut être imprimée en utilisant shopt -op nounsetou shopt -o nounset.
Cochez une option.
Pour imprimer une option spécifique (sans la modifier) pour shopt, utilisez shopt -p name:
$ shopt -p xpg_echo
shopt -u xpg_echo
Et pour set, utilisez: shopt -po name(oui, vous pouvez utiliser shopt -oppour la setliste).
$ shopt -po xtrace
set+o xtrace
Liste des options.
Pour lister toutes les options de shopt, utilisez shopt(ou réutilisables shopt -p).
Aussi shopt -sou shopt -upourrait être utilisé.
La manière de lister toutes les options setest avec set -o(lié:) set +o.
Ou: shopt -oest équivalent à set -oet shopt -opest à set +o.
Manuel
De LESS=+/'^ *shopt \[' man bash:
Sans aucune option ou avec l'option -p, une liste de toutes les options configurables s'affiche. Si -s ou -u est utilisé sans argument optname, l'affichage est limité aux options définies ou non, respectivement.
De LESS=+/'^ *set \[' man bash:
Si -o est fourni sans nom d'option, les valeurs des options actuelles sont imprimées. Si + o est fourni sans nom d'option, une série de commandes set pour recréer les paramètres d'option actuels s'affiche sur la sortie standard.
Exemples
$ 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
ou, si vous le souhaitez, exécutez-leshopt -u extglob
. Cela ne fait aucune différence que ce soit à l'origine ou non.Réponses:
Exécutez simplement:
Il renverra l'état actuel:
Pour afficher toutes les options, lancez simplement:
la source
Utilisez shopt -q :
-q
optionshopt
annule la sortie et renvoie l'état pour indiquer que les options sont définies ou désactivées.Notez que
shopt
seules les options de rapports qui peuvent apparaître enBASHOPTS
variable, ces options ne sont pas valides pour laset
commande intégrée.Pour vérifier les options valides
set
ou pouvant apparaître dansSHELLOPTS
, utilisezshopt -qo
:la source
shopt extglob
?shopt extglob
et votre approche écriront sur stdout. Pensez-vousshopt -q extglob && shopt -u extglob || shopt -s extglob
?shopt -q extglob && : Code when enable || : Code when disable
.Il y a deux listes d'options dans bash. Un pour
shopt
et un pourset
.L'option
extglob
appartient à lashopt
liste.Sa valeur peut être imprimée en utilisant soit
shopt extglob
oushopt -p extglob
.Une option comme
nounset
appartient à laset
liste.Sa valeur peut être imprimée en utilisant
shopt -op nounset
oushopt -o nounset
.Cochez une option.
Pour imprimer une option spécifique (sans la modifier) pour shopt, utilisez
shopt -p name
:Et pour
set
, utilisez:shopt -po name
(oui, vous pouvez utilisershopt -op
pour laset
liste).Liste des options.
Pour lister toutes les options de shopt, utilisez
shopt
(ou réutilisablesshopt -p
).Aussi
shopt -s
oushopt -u
pourrait être utilisé.La manière de lister toutes les options
set
est avecset -o
(lié:)set +o
.Ou:
shopt -o
est équivalent àset -o
etshopt -op
est àset +o
.Manuel
De
LESS=+/'^ *shopt \[' man bash
:De
LESS=+/'^ *set \[' man bash
:Exemples
Et
Il convient de mentionner la
shopt -op
liste desset
options:la source