我想在shell编程中使用echo语句打印双引号。在shell编程中打印双引号
例:
echo "$1,$2,$3,$4";
打印xyz,123,abc,pqrs
如何打印"xyz","123","abc","pqrs";
我曾试图把双引号的回声声明,但它并没有被打印。
我想在shell编程中使用echo语句打印双引号。在shell编程中打印双引号
例:
echo "$1,$2,$3,$4";
打印xyz,123,abc,pqrs
如何打印"xyz","123","abc","pqrs";
我曾试图把双引号的回声声明,但它并没有被打印。
你只要说出来了:
echo "\"$1\",\"$2\",\"$3\",\"$4\""
如前所述here:在双引号
内附字符( '“')保留了引号中的所有字符的字面 值,用“$”之外, “'”,“\”,并且,如果启用了历史扩展,“!”。字符 “$”和“'”保留双引号中仍然具有特殊意义(见 壳牌扩张)。反斜杠保留其只有当后跟以下字符之一 特殊含义:“$”,“'”,“”“,‘\’,或 换行符在双引号,反斜线被后面的 其中之一字符被删除。没有 特殊含义前面字符反斜线保持不变。双引号可以通过用反斜杠它前面加引号双引号内 。如果启用, 历史扩展将除非进行“!”出现在双 引号使用反斜线进行转义,'!' 前的反斜杠不会被移除
特殊参数'*'和'@'hav e双重 报价时的特殊含义(请参阅壳参数扩展)。
你应该逃脱"
,使其在输出中出现,你可以这样做:
echo \""$1"\",\""$2"\",\""$3"\",\""$4"\"
如果任何位置参数包含'%'字符,则第一个版本会遇到问题;第二部作品。 –
@JonathanLeffler哦,你是对的,编辑了答案 –
你的论点也应该放在一对双引号中:'echo“”\“$ 1 \”,\“$ 2 \”,\“$ 3 \”,\“ $ 4 \“”'或其他变量将受IFS分词和可能的路径名扩展 – konsolebox
使用printf
,不需要转义:
printf '"%s","%s","%s","%s";\n' $1 $2 $3 $4
和后;
也打印了!
只有printf与所有shell不兼容 – konsolebox
嗯..'printf'是由[ POSIX](http://pubs.opengroup.org/onlinepubs/9699919799/utilities/printf.html)。 – devnull
是的,但不是在系统V中。 – konsolebox
应该'printf'不'print' –
你大概的意思是说'echo',而不是'print'! – devnull
@snyder在其他shell中也有一个打印命令。 – konsolebox