Fish Shell:
Een string interpoleren

Hoe doe je dat:

In Fish gebruik je dubbele aanhalingstekens en plaats je de variabele of het commando dat je wilt interpoleren met een dollarteken $ rechtstreeks in de string.

set name "world"
echo "Hallo, $name!"

Uitvoer:

Hallo, wereld!

Om de uitvoer van een commando binnen een string op te nemen:

echo "Ik heb (count (ls)) bestanden in deze map."

De uitvoer kan zijn:

Ik heb 9 bestanden in deze map.

Variabelen en commando’s worden beoordeeld en netjes op hun plaats gezet.

Diepere duik

Vóór Fish en andere moderne shells zou je vaak een onhandige combinatie van aanhalingstekens en concatenatie gebruiken—of vertrouwen op externe tools—om variabelen in strings te krijgen.

In bash zou het er bijvoorbeeld zo uitzien:

name="world"
echo "Hallo, "$name"!"

Niet zo soepel, toch?

Fish maakt dit proces niet alleen gestroomlijnder, maar gaat ook sierlijker om met fouten. Als een variabele niet bestaat, zal Fish een lege string invoegen, waardoor de kans op een crash door slecht beheerde interpolaties vermindert.

Alternatieven voor directe interpolatie zijn het gebruik van het printf commando:

set animal "narwal"
printf "De %s is een geweldig wezen!" $animal

Uitvoer:

De narwal is een geweldig wezen!

In dit geval is %s een plaatsvervanger voor de stringvariabele $animal die door printf wordt vervangen.

Wat de implementatie betreft, wanneer Fish de commandoregel verwerkt, analyseert het de dubbele aanhalingstekens strings en vervangt het de variabelen door hun waarden on the fly. Het is elegant en bootst de variabele interpolatie na die te vinden is in hogere programmeertalen zoals Ruby of PHP.

Zie ook

Voor meer over Fish stringmanipulatie en scripting, check deze: