Ich möchte (viele) Informationen zwischen Skripten weitergeben, idealerweise mit Ein-/Ausgabe eines persistenten Skripts. Die Verwendung einfacher Textdateien scheint eher passend zu sein, aber Probleme treten auf, sobald Einträge Leerzeichen enthalten.posix shell: Lesen von Einträgen mit Leerzeichen aus einer Textdatei in Variablen
Was ist der beste Weg, Variablen in einem Shell-Skript zu speichern und in einem anderen zu lesen?
In den folgenden Beispielen Mich erwartet, dass der Ausgang
'publicname' 'x86' '"test directory"' '5' rem:'some other parameters in the future'
Version 1: Das wäre mein bevorzugtes Format der Text-Datei sein, die ich kein Entkommen, würden Leerzeichen in Anführungszeichen eingegeben.
echo 'publicname x86 "test directory" 5 some other parameters in the future
' >/tmp/input.txt
while read -r name archname vcdir rev rem; do
set -e
[ -n "$name" -a "$name" != "#" ] || continue
echo "'$name' '$archname' '$vcdir' '$rev' rem:'$rem'"
done < /tmp/input.txt
Ausgänge
'publicname' 'x86' '"test' 'directory"' rem:'5 some other parameters in the future'
Version 2: korrekte Ausgabe erzeugt, setzen Sie die Eingabe für die Shell entkam werden muss. Dies ist problematisch, da im Idealfall würde die Eingabe mit anderen Sprachen verwendet werden, und auch von Shell-Skripten erzeugt wird (müssen Variablen für den Export zu entkommen)
echo 'publicname x86 test\ directory 5 some other parameters in the future
' >/tmp/input.txt
while read name archname vcdir rev rem; do
set -e
[ -n "$name" -a "$name" != "#" ] || continue
echo "'$name' '$archname' '$vcdir' '$rev' rem:'$rem'"
done < /tmp/input.txt