Wie übergebe ich Hexadezimalzeichen an printf in einem Skriptbefehl?

Wie übergebe ich Hexadezimalzeichen an printf in einem Skriptbefehl?

Wie bringe ich printf dazu, Hexadezimalzeichen auszugeben, wenn es von einem Skript ausgeführt wird?

Angenommen, ich stehe an der Eingabeaufforderung und tippe printf "\x41\x42"die Ausgabe, die ich bekomme

 AB%

Wenn ich jedoch ein Skript habe, das diese Zeile enthält, cat test.shalso

printf "\x41\x42"

Aber die Ausführung des Skripts./test.shproduziert

\x41\x42%

Wie erreiche ich, dass das Skript dieselben Ergebnisse liefert wie die Shell-Eingabeaufforderung?

Antwort1

Versuchen Sie, das externe printfDienstprogramm zu verwenden:

/usr/bin/printf "\x41\x42"

Sie haben wahrscheinlich eine bashShell, aber als Ihre interaktive Shell shist while verknüpft mit dash.

Die dashintegrierte Funktion printfkennt nicht \xNN, daher müssen Sie stattdessen Oktalwerte verwenden \0NN.

Das basheingebaute printfweiß\xNN

verwandte Informationen