Fish Shell:
Debug-output afdrukken
Hoe te:
Maak jezelf vertrouwd met echo
- het Zwitserse zakmes voor output in Fish. Hier is hoe je wat debug-prints kunt toevoegen aan je shellscripts.
function greet
set name $argv[1]
echo "Hey, $name! Laten we debuggen."
echo "De greet-functie wordt uitgevoerd" >&2
end
greet "Ada"
Voorbeelduitvoer:
Hey, Ada! Laten we debuggen.
De greet-functie wordt uitgevoerd
Standaard uitvoer (stdout
) is het hoofdpodium van je script, maar voor debug-geklets, gebruik standaard fout (stderr
) met >&2
.
Diepere duik
Terug in de tijd, toen monitoren net zo diep als breed waren, was output kostbaar. Standaard uitvoer (stdout
) werd het zuivere, op de gebruiker gerichte kanaal, terwijl standaard fout (stderr
) veranderde in het achterafstraatje voor alleen programmeur-gezwets, zoals debug-informatie.
In Fish zijn de standaard commando’s voor output echo
, printf
, en print
. De echo
is eenvoudig en voornamelijk gebruikt voor simpele berichten en inline debug.
Je bent niet alleen aan echo
gebonden, hoewel. Geef de voorkeur aan printf
voor geformatteerde strings, of gebruik omleiding (>
of >>
) om debug-info in een bestand te dumpen voor later.
Wat betreft de implementatie, het gebruiken van stderr
voor debug-output is een conventie uit de Unix-wereld, die helpt om het kaf (de daadwerkelijke output) van het koren (debug-ruis) te scheiden. Dit betekent dat gebruikers nog steeds de werkelijke output van je script kunnen pijplijnen zonder dat debug-geklets erin gemengd wordt.
Zie ook
- Fish Shell Documentatie over Commando’s
- StackOverflow: Discussies en voorbeelden van debuggen in Fish
- Greg’s Wiki: Diepgaande info over I/O omleiding