Wie generiere ich mit Bash/ZSH richtig ein ASCII-Zeichen in einem String?

Wie generiere ich mit Bash/ZSH richtig ein ASCII-Zeichen in einem String?

Ich versuche, eine Zeichenfolge 10gefolgt von einem NULL( \0) gefolgt von einem zu generieren 10.

echo "10\010"Scheint jedoch nicht zu funktionieren (ich vermute, es generiert zwei Zeichen – ein 10gefolgt von ) \010. Ich bin nicht sicher, wie ich diese Werte/Zeichen trennen/maskieren soll?

Ich habe es auch versucht, echo "10""/0""10"es hatte das gleiche Ergebnis.

Ich leite diese Ausgabe an eine benannte Pipe weiter.

Antwort1

In einer POSIX-kompatiblen Shell könnten Sie Folgendes verwenden:

echo '10\000010'

beachten Sie, dass zum Beenden einer oktalen Escape-Sequenz echodrei Oktalzahlen folgen müssen \0.

Das Problem in Ihrem Fall ist, dass es bashin diesem Fall nicht POSIX-kompatibel ist, da es nicht XSIdie Unterstützung implementiert, die für eine nicht eingebettete UNIX-Variante erforderlich ist.

bashwird jedoch teilweise unterstützt printf, daher können Sie Folgendes verwenden:

printf '10\00010\n'

verwandte Informationen