【问题标题】:What is it with echo '***' with bash that does ls instead?用 bash 代替 ls 的 echo \'***\' 是什么?
【发布时间】:2022-12-10 14:11:32
【问题描述】:

我有一个字符串在某处包含“***”,当我回显它时,它会显示我的字符串,但用看起来或多或少像“ls”的东西代替“***”。 您可以通过将其放入 .sh 来重现它:

#!/bin/庆典

测试='***'
回声$测试

我将通过转义 * 来解决此问题,但有人可以告诉我为什么会这样吗?

【问题讨论】:

    标签: bash echo ls


    【解决方案1】:

    * 是一个特殊字符,它会由您的 shell(即 bash)自动扩展,除非您在它周围加上单引号或双引号。因此,如果您说 echo *,bash 会将其扩展为当前文件夹中的任何文件,如果这 3 个文件是您实际上正在执行 echo foo bar baz。如果你说echo "*",你会得到你所期望的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-24
      • 2015-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-04
      相关资源
      最近更新 更多