我理解参数扩展
a = ${b:-c}
将分配' b'的内容如果' b'已设置,其他内容为' c'
无论如何,我可以直接a="123":-"456"
而不是存储' 123'变量和''''另一个变量。
答案 0 :(得分:4)
我理解参数扩展
a = ${b:-c}
将'b'的内容分配给if'b'设置,否则'c'的内容
不完全是。首先,不允许=
符号周围的空格。在第二位,如果参数${b:-c}
设置为非空,则${b}
会扩展为与b
相同的内容。在第三位,如果参数b
为空或未设置,则${b:-c}
会扩展为文字文本c
,而不是参数$c
的内容。
无论如何我可以直接做一个=“123”: - “456”,而不是将'123'存储到变量,将'456'存储到另一个变量。
:-
部分是参数扩展语法的一个方面。它不是运算符,因此您可以在其他上下文中使用它。
此外,你提出的建议没有意义。如果你有一个文字字符串,那么你知道它是否为null,所以你不需要这样的结构。但是,您提供的表达式中的c
是“字”而不是变量名,因此您可以执行
a=${b:-456}
如果将a
设置为非空值,则将参数b
设置为与参数b
相同的值,否则设置为字符串456
。
你也可以做更多复杂的事情,因为替代的替代文本 - 在这种情况下是'456' - 是一个可以扩展的“单词”。特别是,如果您确实希望替代值是参数c
的扩展,那么您可以这样做:
a=${b:-${c}}