alternative zu readarray, denn es funktioniert nicht auf mac os x
Habe ich eine varsValues.txt Datei
cat varsValues.txt
aa=13.7
something=20.6
countries=205
world=1
languages=2014
people=7.2
oceans=3.4
Und ich möchte 2 arrays, vars und Werte. Es sollte enthalten
echo ${vars[@]}
aa something countries world languages people oceans
echo ${values[@]}
13.7 20.6 205 1 2014 7.2 3.4
Benutze ich
Npars=7
readarray -t vars < <(cut -d '=' -f1 varsValues.txt)
readarray -t values < <(cut -d '=' -f2 varsValues.txt)
for (( yy=0; yy<$Npars; yy++ )); do
eval ${vars[$yy]}=${values[$yy]}
done
echo $people
7.2
Aber ich möchte es ohne readarray die funktioniert nicht auf Mac (os x) und IFS (interfield separater).
Andere Lösung? awk? perl? die ich benutzen kann in meinem bash-Skript.
Dank.
- Was versuchen Sie zu tun? Post einen erwarteten Ausgang. Angesichts Ihrer Eingabe, es gibt eine ausgezeichnete chance, man sollte Sie nur schreiben ein awk-Skript, nicht ein shell-Skript, aber wir können nicht helfen Sie mit, dass, bis wir wissen, was es tun soll.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist die awk-version. Beachten Sie, dass
NPars
ist nicht hardcoded.Könnte man eine read-Schleife.
readarray
waren zur Verfügung, als es vermeidet externe Prozesse und einen zweiten Durchlauf durch die Datei.oder durch das Lesen dieselbe Datei zweimal,
Können Sie
declare
bulletin:declare
nur:vars=($(cut -d '=' -f1 varsValues.txt))
gut funktionieren, auf meinem Ubuntu.declare -a
auch.Beginnen wir mit dieser:
Nun - was müssen Sie tun?
Dachte, ich würde werfen dies hier: https://raw.githubusercontent.com/AdrianTP/new-environment-setup/master/utils/readarray.sh
Ich halte dies im "utils" - Ordner in meinem "neuen-environment-setup" Github repo, und ich kann nur Klonen Sie Sie herunter und importieren Sie es, wenn ich Lesen muss eine Datei in ein array von Zeilen, die ein array Holen Sie sich einen neuen computer oder wischen mein Laufwerk. Es sollte so wirken als backfill für readarray die Mängel auf dem Mac.
Import sieht wie folgt aus:
Nutzung aussieht
readarray "<output_var_name>" "<input_file_name>"
.Ja, es ist ein wenig rau. Tut mir Leid, dass. Kann es auch nicht mehr korrekt, aber es hat an einer Stelle, so dass ich dachte, ich würde teilen, es hier zu Pflanzen, die Idee einfach...schreiben Sie Ihre eigenen Abgleich.