Startpagina > Omgeving & hulpmiddelen > set

set: Shell-opties instellen en verwijderen

Het commando `set` wordt gebruikt om verschillende opties in te stellen of te verwijderen die het gedrag van de huidige shell beheersen. Het is een essentieel commando om de stabiliteit van scripts en de efficiëntie van debugging te verbeteren. Het kan ook worden gebruikt om positieparameters in te stellen.

Overzicht

Het commando `set` stelt u in staat om de uitvoeringsomgeving van shell-scripts nauwkeurig af te stemmen. Het biedt verschillende functies, zoals het stoppen van scripts bij fouten, het voorkomen van het gebruik van ongedefinieerde variabelen en het volgen van de uitvoering van commando's.

Belangrijkste functies

  • Shell-opties instellen en verwijderen
  • Positieparameters instellen
  • Ondersteuning voor script-debugging

Belangrijkste opties

Het commando `set` biedt verschillende opties met één teken en lange opties via de `-o` optie. Hier zijn enkele veelgebruikte opties.

Script controle opties

-o opties (lange namen)

Gegenereerde opdracht:

Probeer de opdrachtcombinaties.

Uitleg:

`set` Voer het commando uit.

Combineer deze opties en voer de opdracht virtueel uit met de AI.

Gebruiksvoorbeelden

Script onmiddellijk beëindigen bij fout

#!/bin/bash
set -e

echo "Start"
false # Dit commando retourneert een niet-nul exit-code.
echo "Dit bericht wordt niet weergegeven."

Stelt het script in om onmiddellijk te worden beëindigd als er een fout optreedt.

Fout genereren bij gebruik van ongedefinieerde variabele

#!/bin/bash
set -u

echo "Start"
echo "$UNDEFINED_VAR" # Deze variabele is niet gedefinieerd, dus er treedt een fout op.

Zorgt ervoor dat het script wordt beëindigd wanneer wordt geprobeerd een niet-geïnitialiseerde variabele te gebruiken.

Commando-uitvoering volgen (debugging)

#!/bin/bash
set -x

VAR="Hello"
echo "$VAR World"
ls -l /tmp

Drukt alle commando's af die het script uitvoert, wat helpt bij het debuggen.

Pijplijnfouten detecteren

#!/bin/bash
set -o pipefail

echo "Start"
false | echo "Dit bericht wordt weergegeven, maar het script wordt als mislukt beschouwd."
# Als set -e ook wordt gebruikt, wordt het script beëindigd bij false.

Zorgt ervoor dat de gehele pijplijn als mislukt wordt beschouwd als een tussenliggend commando in de pijplijn mislukt.

Veelgebruikte krachtige combinatie

set -euo pipefail

Een aanbevolen combinatie voor het schrijven van stabiele shell-scripts.

Huidige shell-opties controleren

set -o

Controleert de status van alle momenteel ingestelde opties in de shell.

Positieparameters instellen

set -- "apple" "banana" "cherry"
echo "Eerste parameter: $1"
echo "Alle parameters: $@"

U kunt de positieparameters ($1, $2, etc.) van een script handmatig instellen met `set --`. Dit is handig voor testen of in specifieke situaties.

Tips & Aandachtspunten

Het commando `set` kan de robuustheid van shell-scripts aanzienlijk verbeteren, maar vereist voorzichtigheid bij gebruik.

Aanbevolen combinatie

Het wordt sterk aanbevolen om de combinatie `set -euo pipefail` bovenaan de meeste shell-scripts toe te voegen om de stabiliteit te verhogen.

  • set -e: Voorkomt onverwacht gedrag door onmiddellijk te stoppen bij een fout.
  • set -u: Detecteert potentiële bugs vroegtijdig door het gebruik van ongedefinieerde variabelen.
  • set -o pipefail: Detecteert mislukkingen van tussenliggende commando's in een pijplijn om de successtatus van de gehele pijplijn nauwkeurig te bepalen.

Opties deactiveren

U kunt specifieke opties deactiveren met `+`, zoals `set +e`, `set +u`. Dit is handig wanneer u het gedrag van een optie slechts tijdelijk wilt wijzigen voor een specifiek deel van het script. Bijvoorbeeld, als een script moet blijven draaien, zelfs als een bepaald commando mislukt, kunt u `set +e` gebruiken en vervolgens terugkeren naar `set -e` na voltooiing van die taak.

Gebruik bij debugging

`set -x` is erg nuttig voor debugging omdat het de uitvoeringsstappen van het script gedetailleerd weergeeft. Het is goed om dit aan het begin van het script toe te voegen en het te verwijderen of te commentariëren na het debuggen. `set -v` drukt de invoerregels af, wat helpt bij het begrijpen van de scriptstroom.

Positieparameters en `--`

`set --` stelt alle volgende argumenten in als positieparameters ($1, $2, etc.) en zorgt ervoor dat deze argumenten niet als opties worden geïnterpreteerd, zelfs als ze met een `-` beginnen. Dit is vooral belangrijk bij het opnieuw definiëren van `$@` of `$*` binnen een script.


Hétzelfde categoriecommando