我想在shell编程中使用echo语句打印双引号。
示例:
echo "$1,$2,$3,$4";
打印xyz,123,abc,pqrs如何打印"xyz","123","abc","pqrs";我曾试图在echo语句中放置双引号,但它没有被打印出来。
xyz,123,abc,pqrs
"xyz","123","abc","pqrs";
mepcadol1#
你只需要引用他们的话:
echo "\"$1\",\"$2\",\"$3\",\"$4\""
如here所示:用双引号将字符括起来('"')保留引号内所有字符的文字值,'$'、''、''除外,并且在启用历史记录扩展时,'!'。字符'$'和'“'在双引号中保留其特殊含义(请参阅Shell Expansions)。反斜扛只有在后面跟着下列其中一个字符时,才会保留其特殊意义:'$'、''、'“'、''或换行符。在双引号中,这些字符之一后面的反斜杠将被删除。没有特殊含义的字符前面的反斜杠将保持不变。可以通过在双引号前面加上一个反斜杠来将双引号括起来。如果启用,除非使用反斜杠对双引号中的“!”进行转义,否则将执行历史记录扩展。“!”前面的反斜杠不会被删除。特殊参数'*'和'@'在双引号中具有特殊含义(请参阅Shell参数扩展)。
b09cbbtk2#
使用printf,无需转义:
printf
printf '"%s","%s","%s","%s";\n' "$1" "$2" "$3" "$4"
并且尾随的;也会被打印出来!
;
vngu2lb83#
您应该转义",使其在输出中可见,您可以这样做:
"
echo \""$1"\",\""$2"\",\""$3"\",\""$4"\"
3条答案
按热度按时间mepcadol1#
你只需要引用他们的话:
如here所示:
用双引号将字符括起来('"')保留引号内所有字符的文字值,'$'、''、''除外,并且在启用历史记录扩展时,'!'。字符'$'和'“'在双引号中保留其特殊含义(请参阅Shell Expansions)。反斜扛只有在后面跟着下列其中一个字符时,才会保留其特殊意义:'$'、''、'“'、''或换行符。在双引号中,这些字符之一后面的反斜杠将被删除。没有特殊含义的字符前面的反斜杠将保持不变。可以通过在双引号前面加上一个反斜杠来将双引号括起来。如果启用,除非使用反斜杠对双引号中的“!”进行转义,否则将执行历史记录扩展。“!”前面的反斜杠不会被删除。
特殊参数'*'和'@'在双引号中具有特殊含义(请参阅Shell参数扩展)。
b09cbbtk2#
使用
printf
,无需转义:并且尾随的
;
也会被打印出来!vngu2lb83#
您应该转义
"
,使其在输出中可见,您可以这样做: