据我了解,星号字符*
在 Bash 中具有特殊含义,为了打印文字字符,我们需要转义它 ( \*
) 或引用它 ("*"
或'*'
.
但是,当我尝试过以下操作时:
$ seq 3 | xargs -I * echo *
1
2
3
Run Code Online (Sandbox Code Playgroud)
*
为什么 Bash在上面的例子中不解释?但在下面的示例中,它确实将其解释为通配符(它与当前目录中的文件匹配):
$ seq 3 | xargs -I* echo * # no space between -I and *
main.py
main.py
main.py
Run Code Online (Sandbox Code Playgroud)
您能解释一下这背后的逻辑吗?
谢谢