web-dev-qa-db-fra.com

imprimer des guillemets doubles dans la programmation Shell

Je veux imprimer des guillemets doubles en utilisant l'instruction echo dans la programmation Shell.

Exemple:

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

imprime xyz,123,abc,pqrs

Comment imprimer "xyz","123","abc","pqrs";

J'avais essayé de placer des guillemets doubles dans la déclaration d'écho mais ce n'est pas imprimé.

20
Nagaraju

Il suffit de les citer:

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

Comme indiqué ici :

La présence de caractères entre guillemets doubles ('"') préserve la valeur littérale de tous les caractères entre guillemets, à l'exception de '$', '' ','\'et, lorsque l'expansion de l'historique est activée,'! '. les caractères '$' et '' 'conservent leur signification spéciale entre guillemets doubles (voir Extensions de shell). La barre oblique inversée ne conserve sa signification spéciale que lorsqu'elle est suivie par l'un des caractères suivants:' $ ',' '', '"', '\'ou nouvelle ligne. Dans les guillemets doubles, les barres obliques inverses suivies de l'un de ces caractères sont supprimées. Les barres obliques inverses précédant les caractères sans signification particulière ne sont pas modifiées. Un guillemet double peut être cité entre guillemets doubles en le précédant d'une barre oblique inverse. S'il est activé, l'expansion de l'historique sera effectuée à moins qu'un "!" Apparaissant entre guillemets ne soit échappé à l'aide d'une barre oblique inverse. La barre oblique inverse précédant le "!" N'est pas supprimée.

Les paramètres spéciaux "*" et "@" ont une signification particulière lorsqu'ils sont entre guillemets (voir Développement des paramètres du shell).

30
konsolebox

Utilisez printf, aucun échappement n'est requis:

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

et la fin ; s'imprime aussi!

8
devnull

Vous devriez échapper au " pour le rendre visible dans la sortie, vous pouvez le faire:

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