【发布时间】:2022-12-10 14:11:32
【问题描述】:
我有一个字符串在某处包含“***”,当我回显它时,它会显示我的字符串,但用看起来或多或少像“ls”的东西代替“***”。 您可以通过将其放入 .sh 来重现它:
#!/bin/庆典
测试='***'
回声$测试
我将通过转义 * 来解决此问题,但有人可以告诉我为什么会这样吗?
【问题讨论】:
我有一个字符串在某处包含“***”,当我回显它时,它会显示我的字符串,但用看起来或多或少像“ls”的东西代替“***”。 您可以通过将其放入 .sh 来重现它:
#!/bin/庆典
测试='***'
回声$测试
我将通过转义 * 来解决此问题,但有人可以告诉我为什么会这样吗?
【问题讨论】:
* 是一个特殊字符,它会由您的 shell(即 bash)自动扩展,除非您在它周围加上单引号或双引号。因此,如果您说 echo *,bash 会将其扩展为当前文件夹中的任何文件,如果这 3 个文件是您实际上正在执行 echo foo bar baz。如果你说echo "*",你会得到你所期望的。
【讨论】: