2016-07-08 9 views
1

Ich habe eine Datei mit Konfigurationsinformationen und ein Shell-Skript, das diese Datei liest. Ich möchte Werte an ein Bash-Skript übergeben.Dateiinhalt in Array oder Grep für Werte umwandeln

datei.txt

varNumber=1.1.1 
varName=testThis 
varFile=~/myDir/mySubDir/output.zip 

myShellScript.sh

FILENAME="~/myDir/mySubDir/output.zip" <- this is what I expect from grep/awk 
startNextScript.sh -f $FILENAME 

Ich möchte die Variablen entweder als assoziiertes Array extrahieren, oder - falls einfacher - grep für sie, aber da ich es nicht gewohnt bin Befehle wie diese in bash zu schreiben, bitte ich um Hilfe!

+0

Darf ich fragen, warum Sie wollen nicht, dass die Konfigurationsdatei beziehen? –

+0

Ja, Sie dürfen ;-) Aber ich kann Ihnen wahrscheinlich keine gute Antwort geben ... Was ist der Unterschied zwischen dem Lesen/Umwandeln von Dateien/Arbeiten mit Variablen und Sourcing? – littleturtle

+0

Ihre 'Datei.txt' enthält bereits Variablenzuweisungen. Wenn Sie 'source file.txt' in Ihrem Skript verwenden, werden diese Variablen für Ihr Skript verfügbar. –

Antwort

1

Mit assoziatives Array in bash:

#!/bin/bash 
declare -A vars 
while read -r line ; do 
    var=${line%%=*}  # Remove everything after the first =. 
    value=${line#*=} # Remove everything before the first =. 
    vars[$var]=$value 
done < file.txt 

echo Number: ${vars[varNumber]} 
echo Name: ${vars[varName]} 
echo File: ${vars[varFile]} 
+0

Das funktioniert perfekt! Vielen Dank! – littleturtle