根据type
我使用bash(4.2.37)内置echo
。现在,如果我输入
echo 'Hello, World!'
..那么echo命令将会看到" Hello,World!"作为一个论点?在
的情况下echo Hello, World!
.. echo命令会从bash接收两个参数吗? "你好,"和#34;世界!"分别
答案 0 :(得分:3)
echo
将其参数与空格连接并打印结果。
这意味着echo Hello World
,echo 'Hello World'
和echo Hello World
都会产生完全相同的输出。
如果您想查看将作为参数传递的内容,可以使用printf
:
$ printf "Arg: <%s>\n" Hello, World!
Arg: <Hello,>
Arg: <World!>
$ printf "Arg: <%s>\n" 'Hello, World!'
Arg: <Hello, World!>
$ var='my var
with linefeeds'
$ printf "Arg: <%s>\n" $var
Arg: <my>
Arg: <var>
Arg: <with>
Arg: <linefeeds>
$ printf "Arg: <%s>\n" "$var"
Arg: <my var
with linefeeds>
同一个输出的 echo
将包含<..>
中的每个字符串,它们之间只有一个空格。
特别注意,对于未加引号的变量,结果echo $var
不会显示换行符(因为echo
看到四个单独的单词,它只是与空格连接)。 StackOverflow上有关于此的每日问题。