${variable:-10} 和 ${variable: -10} 有什么区别?
参考回答
${variable:-10}
和 ${variable: -10}
看起来很相似,但它们的含义和作用是不同的。具体区别如下:
${variable:-10}
:- 这个语法表示 默认值替换,它会检查变量
variable
是否已定义并且有值。如果variable
没有定义或者其值为空,则会返回10
作为默认值;如果variable
已定义且有值,则返回variable
的值。 - 解释:
- 如果
variable
已定义且有值:返回variable
的值。 - 如果
variable
未定义或为空:返回10
。
- 如果
示例:
- 这个语法表示 默认值替换,它会检查变量
${variable: -10}
:- 这个语法表示 字符串截取,用于从变量
variable
的值中提取最后 10 个字符。如果variable
的值长度少于 10 个字符,则返回整个字符串。 - 注意,冒号前面没有指定起始位置,表示从字符串的结尾开始截取。
示例:
- 这个语法表示 字符串截取,用于从变量
详细讲解与拓展
${variable:-10}
:默认值替换- 当变量
variable
未定义或者为空时,${variable:-10}
会返回默认值10
。 - 当变量
variable
有值时,${variable:-10}
返回variable
的值。 - 它是一种 条件替换,类似于给变量设置一个默认值。
例子:
- 当变量
${variable: -10}
:字符串截取- 该语法从变量
variable
的值中截取 从结尾起的最后 10 个字符。 - 如果
variable
的值小于 10 个字符,它会返回整个字符串。 - 这种用法常用于提取字符串的后缀部分。
例子:
如果变量的值不足 10 个字符,它会返回整个字符串:
- 该语法从变量
总结
${variable:-10}
是 默认值替换,在变量未定义或为空时使用默认值10
。${variable: -10}
是 字符串截取,从变量的值的末尾提取最后 10 个字符。
这两种用法虽然类似,但作用和使用场景完全不同:一个用于提供默认值,另一个用于处理字符串截取。