De "printf” commando in bash scripting werkt op dezelfde manier “printf ()” werkt in de C-taal. Dit bericht zal zich richten op de “printf” commando, de syntaxis en voorbeelden die het gebruik van dit commando verder uitwerken. Laten we de syntaxis van de "printf” commando:
printf : Het is optioneel om output toe te wijzen aan een variabele.
Hoe de printf-opdracht te gebruiken in bash-scripts met behulp van de Vim-editor:
We gebruiken de Vim-editor voor deze handleiding vanwege de rijke functionaliteit en het gebruiksgemak. Download Vim op je apparaat met:
$ sudo apt install vimStart vim-editor:
$ vimLaten we een eenvoudig programma schrijven om een string af te drukken met “printf”:
#! /bin/bashprintf "Hallo Linuxhint"
Om het bestand op te slaan, drukt u op de "Esc” knop om van modus te wisselen en typ vervolgens “:w voorbeeld.sh" en dan "Enter”. Open nu een nieuw terminalvenster en typ:
$bash voorbeeld.shDe bovenstaande opdracht voert het script uit en drukt de tekst "hallo linuxhint" af, zoals hieronder wordt weergegeven:
Laten we nu enkele formaatspecificaties opnemen:
#! /bin/bashprintf “%s\n” “Hallo Linuxhint”
In het bovenstaande voorbeeld geeft "%s" aan dat het corresponderende argument moet worden behandeld als string en "\n" voor de nieuwe regel. Evenzo, als we "%d" gebruiken, wordt het argument behandeld als een geheel getal:
#! /bin/bashprintf “%s\n” “Hallo Linuxhint” “Meer informatie over” “Linux”
Alle drie de argumenten worden als een tekenreeks behandeld en in een nieuwe regel afgedrukt, zoals wordt aangetoond in de volgende uitvoer:
Een ander voorbeeld wordt hieronder genoemd om het gebruik van de opdracht "printf" te begrijpen:
#! /bin/bashecho "Vul uw naam in"
lees naam
echo “Vul je leeftijd in”
lees leeftijd
printf “Uw naam: %s\nUw leeftijd: %s\n” “$name” “$age”
“Uw naam : %s\n Uw leeftijd : %s\n ” is het formaat terwijl “$name” "$leeftijd" zijn de argumenten. Terwijl "%s" de argumenten aanwijst.
Conversiespecificaties gebruiken met de opdracht printf:
De conversiespecificaties zijn tekens die worden gebruikt met het "%"-teken om aan te geven hoe de argumenten moeten worden behandeld. Laten we eens kijken naar de lijst met enkele veelgebruikte bestekschrijvers:
Specificatie: | Dbeschrijving |
---|---|
%% | Drukt het “%”-symbool af |
%c | Neemt argumenten als een enkel teken op |
%e en %E | Neem argument in getal met drijvende komma en drukt af in exponentiële notatie, %e voor kleine letters en %E voor hoofdletter |
%g en %G | Neem argument in drijvende-kommagetal en drukt af in normale of exponentiële notatie |
%f | Neemt argument als zwevende getallen |
%d | Neemt argumenten als gehele getallen met teken |
%u | Neemt argument als gehele getallen zonder teken |
%O | Neemt argument als een niet-ondertekend octaal getal |
%x en %X | Neemt argumenten als niet-ondertekende hexadecimale gehele getallen |
Laten we de bovenstaande specificaties verder uitwerken met een voorbeeld in bash:
#! /bin/bashecho "Voer een getal in om te converteren"
lees nummer
printf “Decimaal : %d\nOctal : %o\nHex : %X\n” “$nummer” “$nummer” “$nummer”
De richtlijnen Vlag, Breedte en Precisie gebruiken met de opdracht printf:
Vlagrichtlijnen worden optioneel gebruikt met de opdracht "printf". De veelgebruikte vlagrichtlijnen zijn:
- "-" Links rechtvaardig de uitvoer
- "+" Voegt een "+"-teken toe aan een geheel getal
- “0” Voegt “0” toe met een cijfer in plaats van spaties
Breedte-richtlijnen voegen ruimte toe met de uitvoer die gewoonlijk na de vlag wordt gebruikt. Laten we het begrijpen met een voorbeeld:
#! /bin/bashecho "Vul uw naam in"
lees naam
echo “Vul je leeftijd in”
lees leeftijd
printf "Uw naam en leeftijd zijn: %5s %5d\n" "$name" "leeftijd"
"%30s" betekent dat de spatie 30 tekens lang is en om het uitvoerformulier links uit te lijnen, gebruikt u het "-"-teken "%-30s".
De precisierichtlijn bestaat uit de punt “.” Gevolgd door positief geheel getal:
#! /bin/bashprintf "%.2f” 2.56473
De uitvoer zou zijn:
Als het getal een geheel getal is, voegt de precisie-instructie "0" toe voor het getal. Als het getal van het type met drijvende komma is, specificeert de precisierichtlijn het aantal positieve cijfers achter de komma. Voor string specificeert het het aantal tekens dat moet worden weergegeven:
#! /bin/bashprintf "%.2f\n” 2.468936
printf "%.3d\n” 10
printf "%.3s\n” “samlinux”
Backslash Escaped-parameters:
Backslash-escape-parameters, ook wel escape-reeksen genoemd, worden gebruikt met een backslash om de tekenreeks op te maken met de opdracht "printf". Deze sequenties vertegenwoordigen zichzelf niet, maar interpreteren in sommige andere karakters. Enkele veelgebruikte ontsnappingsreeksen zijn:
Karakter | Omschrijving |
---|---|
\\ | Drukt backslash-tekens af |
\b | Drukt backspace-teken af |
\n | Drukt uitvoer af in een nieuwe regel |
\r | Drukt een regelterugloop af (cursor aan het begin van de regel) |
\t | Geeft tabruimte van rechts |
\v | Geeft tabruimte |
Conclusie:
Als het gaat om het afdrukken van iets in bash-scripting, wordt het "echo" -commando het meest gebruikt omdat het gemakkelijk te gebruiken en te onthouden is. Maar het "echo" -commando heeft zijn beperking. Om de uitvoer op de juiste manier te formatteren, moet de "printf" commando kan worden gebruikt. De "printf" commando wordt geleverd met tal van opties om tekenreeksuitvoer te formatteren en zelfs de conversies en opmaak van basisnummers. Deze handleiding bevat een grondig begrip van de functionaliteit van het "printf"-commando in bash-scripting met voorbeelden.