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

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

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

spark ${@:-`cat`}

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

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

答案1

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

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

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

答案2

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

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

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

这是一个终端测试:

localhost:~ _druu$ echo ${@:-`cat`}
hello
world
;)
^\hello world ;)
localhost:~ _druu$ 

相关内容