Wie überprüfe ich Shell-Optionen?

Wie überprüfe ich Shell-Optionen?

Ich möchte prüfen, welche Optionen für meine aktuelle Shell aktiviert sind. Ich möchte beispielsweise wissen, ob ich mit -xoder -eoder einer beliebigen Anzahl anderer Optionen aufgerufen wurde.

Ich sourcehabe ein Shell-Skript mit einer Shebang-Zeile erstellt und versuche später, 'x' mit einem am Ende des Skripts #!/bin/bash -xauszuschalten . Jetzt möchte ich überprüfen, ob meine Zeile erfolgreich war.set +xset +x

Lösungsversuch

Ich habe printenvzwei setMöglichkeiten entdeckt, um Informationen zur aktuellen Shell zu prüfen, aber keine davon scheint eine Variable zu enthalten, die speichert x eoder ähnliches.

Antwort1

Es steht in der $-Variable.

Sehen Sie sich dieDokumentation zum setBefehl-- 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 $BASHOPTSund $SHELLOPTS.

Quelle

verwandte Informationen