Kør Shell Script og Evaluer Output med Source Uden Midlertidig Fil

Hvordan kan et program, der udskriver shell-variabler til STDOUT, køres fra en shell script, så output evalueres med source, uden at bruge en midlertidig fil?

For at køre et program, der udskriver shell-variabler til STDOUT, og få outputtet evalueret med source uden at bruge en midlertidig fil, kan du bruge process substitution som vist: `source <(./generate_vars.sh)`.

Hvordan kan et program, der udskriver shell-variabler til STDOUT, køres fra en shell script, så output evalueres med source, uden at bruge en midlertidig fil?

For at køre et program, der udskriver shell-variabler til STDOUT, og få outputtet evalueret med source uden at bruge en midlertidig fil, kan du bruge en kombination af process substitution og source kommandoen. Her er en trin-for-trin guide:

  1. Antag, at du har et program, der udskriver shell-variabler. For eksempel, et script kaldet generate_vars.sh:
#!/bin/bash
echo "VAR1=value1"
echo "VAR2=value2"
  1. Brug process substitution til at køre programmet og få outputtet evalueret af source kommandoen:
source <(./generate_vars.sh)

Her er hvad der sker i ovenstående kommando:

  • ./generate_vars.sh køres, og dets output sendes til en midlertidig fil, som process substitution håndterer.
  • source kommandoen evaluerer indholdet af denne midlertidige fil, som om det var en del af det aktuelle script.

Dette gør det muligt at undgå brugen af en midlertidig fil, da process substitution håndterer det internt.

Her er et komplet eksempel på et shell script, der bruger denne teknik:

#!/bin/bash

# Kør programmet og source outputtet
source <(./generate_vars.sh)

# Bekræft at variablerne er sat
echo "VAR1 is $VAR1"
echo "VAR2 is $VAR2"

Ved at bruge denne metode kan du dynamisk indlæse variabler fra et eksternt program direkte ind i dit shell script uden at skulle oprette og håndtere midlertidige filer.