2016-11-30 13 views
2

brauche ich so etwas wie "0x12345" in einer Datei Skript mit einem bash zu schreiben. Der Hexadezimalwert ist eine Variable und die Anführungszeichen müssen in der Datei enthalten sein.Verwenden Escape-Codes sofort gefolgt von Zahlen

Um ein Zitat zu widerspiegeln, verwende ich \042, und ich verwende $1 für das hex. So habe ich so etwas wie:

echo -e "\042$1\042" > file.txt

Das funktioniert perfekt, wenn $1 ist mit einem Buchstaben beginnt, sondern weil es mit einem 0 beginnt, wird der Escape-Code als \0420 oder so ähnlich interpretiert, und es schreibt ^Px123" in der Datei statt "0x123"

Wie ich genau schreiben kann „0x ..“? Ich kann kein Leerzeichen oder ein anderes Zeichen vor der Nummer hinzufügen. Gibt es einen besseren Weg, um das zu tun, was ich versuche?

+1

Mit 'echo -e "\ x22 $ 1 \ x22"' würde gearbeitet haben; Da die hexadezimale Sequenz maximal 2 Zeichen lang sein kann, "würde" sie die erste Ziffer von "$ 1" nicht "absorbieren" wie "\ 042". – chepner

Antwort

4

Sie sollten nicht -e brauchen.

Verwenden Sie einfach:

s="0x12345" 
echo "\"$s\"" 

"0x12345" 

Oder mehr verwenden tragbare printf:

printf "\042%s\042\n" "$s" 

"0x12345" 
+0

Danke! Ich habe '-e' verwendet, weil ich anfangs' \ n' verwenden musste. Sind '\ '' und '\ 042' genau gleichwertig? –

+0

Ja, sie sind gleich – anubhava

Verwandte Themen