![Wie übergebe ich Hexadezimalzeichen an printf in einem Skriptbefehl?](https://rvso.com/image/231049/Wie%20%C3%BCbergebe%20ich%20Hexadezimalzeichen%20an%20printf%20in%20einem%20Skriptbefehl%3F%20.png)
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.sh
also
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 printf
Dienstprogramm zu verwenden:
/usr/bin/printf "\x41\x42"
Sie haben wahrscheinlich eine bash
Shell, aber als Ihre interaktive Shell sh
ist while verknüpft mit dash
.
Die dash
integrierte Funktion printf
kennt nicht \xNN
, daher müssen Sie stattdessen Oktalwerte verwenden \0NN
.
Das bash
eingebaute printf
weiß\xNN