[linux] cat $PWD

Geert Stappers stappers op stappers.nl
Za Jan 14 17:10:49 CET 2023


On Sat, Jan 14, 2023 at 02:29:01AM +0100, Oscar Roozen via Linux wrote:
> On 12-01-2023 21:14, Geert Stappers via Linux wrote:

> } De wens^Wuitdaging is eenvoudig van een bestand met daarin $PWD
> } naar een bestand met de uitgeschreven waarde de Working Directory.

> > Toepassing van een oplossing hier is een source tree die op een
> > willekeurige plek in filesystem staat (d.m.v. `tar xf` of `git clone`)
> > daar van configuratie_bestand_in het configuratie_bestand met
> > absolute padden ( expansie van $PWD ) te hebben.
> 
> Ik snap nog steeds niet helemaal wat je wil, maar vermoed dat ...
> 

Oei, dan is het aan mij om de vraag duidelijker te stellen.
Hier komt die poging. Het is aan de hand van een voorbeeld:

Je hebt

   git clone https://git.sr.ht/~stappers/jan12

gedaan en hebt nu een (proof of concept) script als
------8<----8<----8<------
#!/bin/bash -e
#
#  demonstratiescriptje
#  - vereiste parameter is configuratiebestand
#  - leest het configuratiebestand
#  - doet iets met waardes uit het config bestand
#

source $1

echo Kleuren:
for K in $( find $KLEUREN -type f )
do
  echo Kleur $( basename $K )
done

echo Vormen:
for V in $( find $VORMEN -type f )
do
  echo Vorm $( basename $V )
done

# l l
------>8---->8---->8------

Om dat PoC-script te kunnen draaien is er een configuratiebestand nodig.

Waardes in dat de configbestand zijn echter afhankelijk van
waar de git repository is terecht gekomen. We stellen dat
de git repo in huidige directory, PWD, staat.

Met een inputbestand `config.in` als
------8<----8<----8<------
KLEUREN=$PWD/kleur
VORMEN=$PWD/vorm
------>8---->8---->8------

En een script als
------8<----8<----8<------
#!/bin/sh
sed -e "s@\$PWD@$PWD@" config.in > config
# l l
------>8---->8---->8------
maak je de `config`.


Een andere manier is `cat` de $PWD laten omzetten, als in dit script:
------8<----8<----8<------
#!/bin/sh
cat << HERE > config
KLEUREN=$PWD/kleur
VORMEN=$PWD/vorm
HERE
# l l
------>8---->8---->8------

Er is dan een `config` met dezelfde inhoud als wat met
de andere methode wordt aangemaakt.



Nu heb ik de hoop dat er iets als "envircat" dat environmentvariabelen
expandeert naar hun waarde.  Een of andere `eval` optie of iets anders
waar ik nog geen weet van heb, maar iemand van deze groep wel.


Groeten
Geert Stappers
-- 
Silence is hard to parse


Meer informatie over de Linux maillijst