Zuweisen Zeichenfolge mit null Zeichen (\0) eine variable in der Bash

Beim Versuch, Prozess, wird eine Liste von Datei-/foldernames richtig (siehe meine anderen Fragen) durch die Verwendung eines NULL-Zeichen als Trennzeichen stolperte ich über ein merkwürdiges Verhalten der Bash, dass ich nicht verstehe:

Wenn Sie einen string mit einem oder mehreren NULL-Zeichen einer Variablen, die NULL-Zeichen verloren /ignoriert /nicht gespeichert.

Beispielsweise

echo -ne "n\0m\0k" | od -c   # -> 0000000   n  \0   m  \0   k

Aber:

VAR1=`echo -ne "n\0m\0k"`
echo -ne "$VAR1" | od -c   # -> 0000000   n   m   k

Dies bedeutet, dass ich hätte schreiben müssen, dass der string in eine Datei (z.B. in /tmp) und Lesen Sie es von dort zurück, wenn die Rohrleitung direkt ist nicht erwünscht oder machbar ist.

Beim ausführen dieser Skripte in Z-shell (zsh) die strings mit \0 sind, erhalten in beiden Fällen, aber leider kann ich nicht davon ausgehen, dass die zsh ist in den Systemen läuft mein Skript beim Bash sein sollte.

Wie können strings mit \0 chars werden gespeichert oder verarbeitet werden effizient ohne Verlust der (meta-) Zeichen?

InformationsquelleAutor der Frage antiplex | 2011-07-04

Schreibe einen Kommentar