Vele beweren dat het via parameters doorgeven van namen van plaatshouders (variabelen) aan functies in Bash, de namen van de plaatshouders als letterlijke tekst (tekenreeks, string) wordt behandeld waardoor de waarde van de plaatshouder verloren gaat. Programmeurs noemen dit doorverwijzing (dereference). Wel doorverwijzing (dereference) in Bash is wel mogelijk.
Het volgende script bewijst dit:#!/bin/bash NaarFunctieDoorverwezenPlaatshouder() { if [ -n "$1" ] ; then echo "De waarde van [${1}] is: [${!1}]" else echo "Geen parameter aan de functie doorgegeven" fi } Plaatshouder="PindaNet" NaarFunctieDoorverwezenPlaatshouder PlaatshouderAls je bovenstaande code in een bestand opslaat en uitvoert, krijg je de volgende uitvoer:
dany@linux-4wlv:~>Het geheim zit in het gebruik vanchmod +x PlaatshouderDoorverwijzenInFunctie.sh
dany@linux-4wlv:~>./PlaatshouderDoorverwijzenInFunctie.sh
De waarde van [Plaatshouder] is: [PindaNet]
!
bij het interpreteren van ${!1}
.
De Bash handleiding vermeld:
Als het eerste teken van een parameter een uitroepteken is, wordt een doorverwijzing gebruikt. Bash gebruikt de rest van de parameter als de naam van een plaatshouder; de waarde van de zo gevonden plaatshouder wordt opgehaald en gebruikt in de plaats van de oorspronkelijke waarde. Dit staat bekend als indirecte benadering (indirect expansion).