Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 在shell编程中打印双引号_Bash_Shell_Echo - Fatal编程技术网

Bash 在shell编程中打印双引号

Bash 在shell编程中打印双引号,bash,shell,echo,Bash,Shell,Echo,我想在shell编程中使用echo语句打印双引号 示例: echo "$1,$2,$3,$4"; 打印xyz、123、abc、pqrs 如何打印“xyz”、“123”、“abc”、“pqrs” 我曾试图在echo语句中加上双引号,但没有打印出来。您只需引用它们: echo "\"$1\",\"$2\",\"$3\",\"$4\"" 如前所述: 在双引号(“”)中包含字符将保留文字 引号中除“$”以外的所有字符的值, “`'、“\”,以及启用历史扩展时的“!”。字符 “$”和“`”在双引号中保

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

示例

echo "$1,$2,$3,$4";
打印
xyz、123、abc、pqrs

如何打印
“xyz”、“123”、“abc”、“pqrs”


我曾试图在echo语句中加上双引号,但没有打印出来。

您只需引用它们:

echo "\"$1\",\"$2\",\"$3\",\"$4\""
如前所述:

在双引号(“”)中包含字符将保留文字 引号中除“$”以外的所有字符的值, “`'、“\”,以及启用历史扩展时的“!”。字符 “$”和“`”在双引号中保留其特殊含义(请参见 反斜杠只有在以下情况下才保留其特殊含义 后跟以下字符之一:“$”、“`、”、“\”或 新线。在双引号中,后跟以下内容之一的反斜杠: 这些字符将被删除。反斜杠前面的字符不带 有一个特殊的含义没有修改。可以引用双引号 在双引号内,在其前面加上反斜杠。如果启用, 除非出现“!”命令,否则将执行历史扩展双倍出现 引号使用反斜杠转义。“!”前面的反斜杠 没有删除

特殊参数“*”和“@”在双精度模式下具有特殊含义 引号(请参见Shell参数展开)


您应该转义
以使其在输出中可见,您可以执行以下操作:

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

使用
printf
,不需要转义:

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

后面的
也会被打印出来!

应该是
printf
而不是
print
你可能想说
echo
而不是
print
!在
ksh
中使用
print
命令而不是
echo
,但是问题是问
bash
,你应该编辑你的答案同时或至少指定
ksh
limitation@konsolebox你读过Raju的评论了吗?这就是它的区别,未来的读者也会尝试你的命令,并会得到相同的错误。@Raju我总是喜欢引用初学者的评论。它似乎也更新了。只是printf与所有shell不兼容。嗯。。
printf
是由定义的。是的,但不是在System V中。System V不符合POSIX这一事实绝不会影响这个答案。此外,问题被标记为
bash
,因此操作系统应该是无关的。@chepner有时我们不能仅仅因为标记,因为有很多原因可以将其添加到那里。一些人只是将其标记为暗示bash是shell本身,而另一些人只是将其放置在更多的观众面前。有时依赖标题可能更准确。如果任何位置参数包含
%
字符,则第一个版本会遇到问题;第二个版本有效。您的参数也应该放在一对双引号周围:
echo“\”$1\”、\“$2\”、\“$3\”、\“$4\”
,否则变量将使用IFS进行分词并可能进行路径名扩展。