这三条命令有什么区别?
echo `date`
echo "`date`"
echo '`date`'我搞不懂到底有什么区别。我认为,当‘在附近-它意味着它是一个字符串,因此回显将字面输出字符串date,而不是显示日期?
发布于 2013-11-01 06:00:54
发布于 2013-11-01 06:49:32
两者都有
echo `date`和
echo "`date`"会显示日期。后者的输出本身类似于运行date的输出。
但是,有一个不同之处:"引号中包围的那个"将作为一个参数发送给echo。引号将整个命令的输出封装为一个参数。因为echo只是按顺序打印它的参数,中间有空格,所以它看起来基本上是一样的。
下面是一个细微差别的例子:
echo `date`生产:
Fri Nov 1 01:48:45 EST 2013但是:
echo "`date`"生产:
Fri Nov 1 01:48:49 EST 2013请注意,Nov之后的两个空格被缩减为没有引号的两个空格。这是因为shell解析每个空格分隔的元素,并将结果作为6个参数发送给echo。引用它时,echo收到一个参数,引号保留空格。
这在除echo之外的命令中变得更加重要。例如,假设一个命令foo需要两个参数:日期和电子邮件地址。
在这种情况下,这是可行的:
foo "`date`" joeuser@example.com但是,这将使脚本混淆,因为它发送了7个参数:
foo `date` joeuser@example.comhttps://unix.stackexchange.com/questions/98391
复制相似问题