
Ich möchte prüfen, welche Optionen für meine aktuelle Shell aktiviert sind. Ich möchte beispielsweise wissen, ob ich mit -x
oder -e
oder einer beliebigen Anzahl anderer Optionen aufgerufen wurde.
Ich source
habe ein Shell-Skript mit einer Shebang-Zeile erstellt und versuche später, 'x' mit einem am Ende des Skripts #!/bin/bash -x
auszuschalten . Jetzt möchte ich überprüfen, ob meine Zeile erfolgreich war.set +x
set +x
Lösungsversuch
Ich habe printenv
zwei set
Möglichkeiten entdeckt, um Informationen zur aktuellen Shell zu prüfen, aber keine davon scheint eine Variable zu enthalten, die speichert x
e
oder ähnliches.
Antwort1
Es steht in der $-
Variable.
Sehen Sie sich dieDokumentation zum set
Befehl-- Scrollen Sie bis zum Ende nach unten und Sie sehen „Die aktuellen Optionen finden Sie in $-
.“
Eine kurze Demo
$ bash
$ echo $-
himBH
$ set -f; set +H
$ echo $-
fhimB
$ [[ $- == *i* ]] && echo This is an interactive shell
This is an interactive shell
Antwort2
Es gibt auch $BASHOPTS
und $SHELLOPTS
.