Die einfache Möglichkeit besteht darin, einfache Anführungszeichen '…'
um die Zeichenfolge zu verwenden. Einfache Anführungszeichen begrenzen eine Literalzeichenfolge, sodass Sie alles zwischen sie setzen können, außer ein einfaches Anführungszeichen '
. Verwenden Sie zum Einfügen eines einfachen Anführungszeichens in die Zeichenfolge die vierstellige Sequenz '\''
(einfaches Anführungszeichen, Backslash, einfaches Anführungszeichen, einfaches Anführungszeichen).
Technisch gesehen gibt es keine Möglichkeit, ein einfaches Anführungszeichen in ein einfaches Anführungszeichen zu setzen. Aufeinanderfolgende Literale sind jedoch genauso gut wie ein einzelnes Literal. 'foo'\''bar'
wird analysiert als
- das einfach zitierte Literal
foo
- das Backslash-zitierte wörtliche Zeichen
'
- das einfach zitierte Literal
bar
Dies bedeutet effektiv, dass dies '\''
eine Möglichkeit ist, einem einzelnen Anführungszeichen in einem einfach zitierten Literal zu entkommen.
Beachten Sie, dass der print
Befehl ksh eine Backslash-Erweiterung durchführt. Fügen Sie die -r
Option hinzu, um dies zu vermeiden. Es wird Ihnen nicht schaden, da die zu druckende Zeichenfolge zufällig keinen Backslash enthält. Es ist jedoch besser, sie zu verwenden -r
, falls während der Wartung ein Backslash hinzugefügt wird.
print -r -- 'clock=$(prtconf -s | awk '\''{print $4,$5}'\'')' > test.txt
Alternativ können Sie die POSIX-Methode verwenden, um eine Zeichenfolge buchstäblich mit einem Zeilenumbruch am Ende zu drucken:
printf '%s\n' 'clock=$(prtconf -s | awk '\''{print $4,$5}'\'')' > test.txt
clock=$(prtconf -s | awk '{print $4,$5}')
Ausdruck inawk
Anweisung verwenden möchten ?