Bash:
Samenvoegen van strings
Hoe te:
Hier is de snelle manier om je strings in Bash gezellig dicht bij elkaar te brengen:
# Samenvoegen door strings naast elkaar te plaatsen
greeting="Hallo, "
name="wereld!"
welcome=$greeting$name
echo $welcome # Geeft uit: Hallo, wereld!
# Krullende haakjes gebruiken voor duidelijkheid
version="versie"
number=1
full_version=${version}_${number}
echo $full_version # Geeft uit: versie_1
# Samenvoegen met variabelen en literalen
timestamp=$(date +%Y%m%d) # Haalt de huidige datum in JJJJMMDD-formaat op
filename="backup_${timestamp}.tar.gz"
echo $filename # Geeft uit: backup_20230315.tar.gz
Diepere Duik
Terug in de dagen voordat GUI’s het land regeerden, waren commandoregels en scripts de koningen van computerinteractie. Het samenvoegen van strings is altijd essentieel geweest, omdat het dynamische commando- en bestandsmanipulatie mogelijk maakt.
Een historisch alternatief is het expr
commando, dat nu aanvoelt als een relikwie:
older_way=$(expr $greeting $name)
Maar Bash zei: “Wie heeft die last nodig?” en maakte het natuurlijker. Hoe? Nou, Bash behandelt strings alsof ze gezellige vrienden zijn: zet ze naast elkaar en ze zullen samenknuffelen tot één lange string.
Onder de motorkap behandelt Bash dit zonder enige speciale functie of syntax voor samenstelling. De woorden of variabelen vloeien gewoon samen. Echter, als je variabelen hebt die kunnen beginnen met een nummer of een underscore, dan zou je ze meestal omwikkelen met krullende haakjes om verwarring met andere variabelenamen te voorkomen.
Er is echter een addertje onder het gras: spaties zijn belangrijk. Als je niet oppast, kun je eindigen met onbedoelde gaten of een samengedrukt zootje.
Een huidig alternatief is het gebruik van de printf
functie, die je meer controle biedt over de opmaak:
printf -v full_greeting "%s%s" "$greeting" "$name"
echo $full_greeting # Geeft uit: Hallo, wereld!
Zie Ook
- GNU Bash-handleiding voor de ins en outs van alles wat met BASH te maken heeft.
- Geavanceerde Bash-scriptinggids voor scriptacrobatiek en meer voorbeelden.