23

我想在 shell 编程中使用 echo 语句打印双引号。

示例

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

印刷xyz,123,abc,pqrs

如何打印"xyz","123","abc","pqrs";

我曾尝试在 echo 语句中放置双引号,但它没有被打印出来。

4

3 回答 3

39

你只需要引用它们:

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

如此处所述:

将字符括在双引号 ('"') 中会保留引号内所有字符的字面值,但 '$'、'`'、'\' 以及启用历史扩展时的 '!' 除外。字符 '$' 和 '`' 在双引号中保留其特殊含义(请参阅 Shell 扩展)。反斜杠仅在后跟以下字符之一时才保留其特殊含义:'$'、'`'、'"'、' \',或换行符。在双引号内,删除后面跟有这些字符之一的反斜杠。没有特殊含义的字符前面的反斜杠保持不变。双引号可以用反斜杠在双引号中引用。如果启用,将执行历史扩展,除非出现“!” 出现在双引号中的使用反斜杠进行转义。'! 前面的反斜杠

特殊参数 '*' 和 '@' 在双引号中具有特殊含义(请参阅 Shell 参数扩展)。

于 2013-09-21T05:12:50.870 回答
15

使用printf,不需要转义:

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

尾随;也被打印出来了!

于 2013-09-21T05:19:27.730 回答
4

您应该转义"以使其在输出中可见,您可以这样做:

echo \""$1"\",\""$2"\",\""$3"\",\""$4"\"
于 2013-09-21T05:17:10.517 回答