Loading...
09-01-2023

Om het leven van gebruikers makkelijk te maken worden er nogal wat templates bedacht. Zo liep ik een keer tegen de bash template onderaan deze pagina aan (dit is een iets aangepaste versie), waarvan ik niet meer weet van wie en hoe deze heet, helaas. Na deze template veelvoudig toegepast te hebben liep ik nu toch tot een tekortkoming aan.

Uit betrouwbare bron kan ik verklappen dat het gebruiken van spaties in paden nogal tot onverwachte resultaten kunnen leiden, als hier niet goed mee om gegaan wordt. Helaas was ik niet zo verstandig geweest om de standaard naam van een extern medium aan te passen, waardoor ik overal nu rekening moet houden met deze spaties.

De originele template wordt basename gebruikt om de naam van het huidige script te bepalen:

__base="$(basename ${__file} .sh)"

Als er spaties voorkomen in deze regel, dan zal basename dit als verschillend parameters zien en hierbij meerdere regels als output geven. Dit is op meerdere manier op te lossen:

  1. Door de spatie te "escapen" met \s
  2. Door quotes om de variable te gebruiken

Ik heb hierbij gekozen voor de \s methode:

#!/bin/bash

# Set magic variables for current file & dir
__dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
__file="${__dir}/$(basename "${BASH_SOURCE[0]}")"
__base="$(basename ${__file// /\s} .sh)"
__root="$(cd "$(dirname "${__dir}")" && pwd)" # <-- change this as it depends on your app

__base bevat hierna maar 1 resultaat.

  • Bash