it-swarm.com.de

drucken Sie doppelte Anführungszeichen in der Shell-Programmierung

Ich möchte doppelte Anführungszeichen mit der echo-Anweisung in der Shell-Programmierung drucken.

Beispiel:

echo "$1,$2,$3,$4";

druckt xyz,123,abc,pqrs

Wie drucke ich "xyz","123","abc","pqrs";

Ich habe versucht, doppelte Anführungszeichen in die Echo-Anweisung einzufügen, aber sie wird nicht gedruckt.

20
Nagaraju

Sie müssen sie nur zitieren:

echo "\"$1\",\"$2\",\"$3\",\"$4\""

Wie gesagt hier :

Das Einschließen von Zeichen in Anführungszeichen ('"') behält den Literalwert aller Zeichen in den Anführungszeichen bei, mit Ausnahme von '$', '', '\' und, wenn die Verlaufserweiterung aktiviert ist, '!' Die Zeichen '$' und '`' behalten ihre spezielle Bedeutung in Anführungszeichen (siehe Shell-Erweiterungen). Der Backslash behält seine spezielle Bedeutung nur bei, wenn eines der folgenden Zeichen folgt: '$', '', '",'\'oder Newline. In Anführungszeichen werden Backslashes, auf die eines dieser Zeichen folgt, entfernt. Backslashes vor Zeichen ohne besondere Bedeutung bleiben unverändert. Ein Anführungszeichen kann in Anführungszeichen gesetzt werden, indem ein Backslash vorangestellt wird. Wenn diese Option aktiviert ist, wird die Verlaufserweiterung ausgeführt, es sei denn, ein in Anführungszeichen stehendes "!" Wird mit einem Backslash maskiert. Der Backslash vor dem "!" Wird nicht entfernt.

Die Sonderparameter "*" und "@" haben in doppelten Anführungszeichen eine besondere Bedeutung (siehe Shell-Parametererweiterung).

30
konsolebox

Verwenden Sie printf, es ist kein Escape-Befehl erforderlich:

printf '"%s","%s","%s","%s";\n' $1 $2 $3 $4

und das nachgestellte ; wird auch gedruckt!

8
devnull

Sie sollten das " Maskieren, um es in der Ausgabe sichtbar zu machen. Sie können dies tun:

echo \""$1"\",\""$2"\",\""$3"\",\""$4"\"
4
Ashish Gaur