`:-` 在 shell 脚本中是什么意思

who*_*ami 28 shell bash parameter

我在一个很棒的 shell 脚本的末尾看到了这一点,但我无法理解这里的登录信息,因为我认为它缺少更长的命令。

spark ${@:-`cat`}
Run Code Online (Sandbox Code Playgroud)

这出现在这个脚本的末尾。有任何想法吗?

+ 标记为将其扩展为完整代码段的人,即使速度较慢(更好的解释)

Sté*_*nez 29

这是参数替换的第一个特殊情况man bash

${parameter:-word}
使用默认值。如果parameter未设置或为空,word则替换的扩展。否则,将parameter替换的值 。

在您提到的情况下,要么用户在命令行上提供了参数并且将使用它们,要么要求用户随后在标准输入中输入它们。


dav*_*tza 5

Afaik:-基本上是:使用$@OR `cat`(不设置$@`cat`)...

所以一些变量替换的东西...

编辑:所以它为您提供了某种交互式输入...

这是一个小的终端测试:

localhost:~ _druu$ echo ${@:-`cat`}
hello
world
;)
^\hello world ;)
localhost:~ _druu$ 
Run Code Online (Sandbox Code Playgroud)