[linux] cat $PWD

Geert Stappers stappers op stappers.nl
Zo Jan 15 15:58:25 CET 2023


On Sun, Jan 15, 2023 at 12:48:41AM +0100, Mike Jonkmans via Linux wrote:
> On Sat, Jan 14, 2023 at 05:10:49PM +0100, Geert Stappers via Linux wrote:
> > 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.
> > > 
> > > Ik snap nog steeds niet helemaal wat je wil, maar vermoed dat ...
> > > 
> > 
> > Oei, dan is het aan mij om de vraag duidelijker te stellen.
> > 
> >    git clone https://git.sr.ht/~stappers/jan12
> > 
> > ------8<----8<----8<------
> > #!/bin/bash -e
> > #  demonstratiescriptje
> > #  - leest het configuratiebestand
> > #  - doet iets met waardes uit het config bestand
> > #
   ...
> > ------>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 met een script als
   ...
> > sed -e "s@\$PWD@$PWD@" config.in > config
   ...
> > 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.
> > 
> Kun je niet de $PWD/ weglaten uit config.h?
> Dan kun je $PWD bij de find(s) plakken.
 
Helaas is het demonstratie-scriptje niet het oorspronkelijke probleem.


Off-list kreeg ik deze tip:

  cat config.in | while read ; do eval echo "${REPLY}" ;  done


Met die informatie dit "generate config file script" gemaakt:
------8<----8<----8<------
#!/bin/sh
exec > config  # defineert waar we de output willen hebben
cat config.in | while read LINE
do
    eval echo ${LINE}
done
# l l
------>8---->8---->8------

Dank voor de tip.


Groeten
Geert Stappers
(Heeft `sed` gebruikt op de plek van het oorspronkelijke probleem.)
-- 
$ git push
Enumerating objects: 13, done.
Counting objects: 100% (13/13), done.
Delta compression using up to 12 threads
Compressing objects: 100% (12/12), done.
Writing objects: 100% (12/12), 1.60 KiB | 1.60 MiB/s, done.
Total 12 (delta 4), reused 0 (delta 0), pack-reused 0
To git.sr.ht:~stappers/jan12
   51b6126..93c2563  main -> main
$


Meer informatie over de Linux maillijst