跳到主要内容

${variable:-10} 和 ${variable: -10} 有什么区别?

参考答案:

在 shell 脚本中,${variable:-10}${variable: -10} 是两种完全不同的参数扩展方式,它们各自有不同的用途。

  1. ${variable:-10}: 这种形式的参数扩展是默认值扩展。如果 variable 这个变量被设置了(即不是空字符串或未定义),那么 ${variable:-10} 就会返回 variable 的值。如果 variable 没有被设置(或者其值为空字符串),那么它就会返回 -10 作为默认值。

例如:

variable="hello"
echo ${variable:-10}  # 输出 "hello"

unset variable
echo ${variable:-10}  # 输出 "10"
  1. ${variable: -10}: 这种形式的参数扩展是子串扩展。它返回 variable 变量的值中从末尾开始的 10 个字符。注意这里有一个空格在冒号和 -10 之间,这是非常重要的。

例如:

variable="abcdefghijklmnopqrstuvwxyz"
echo ${variable: -10}  # 输出 "qrstuvwxyz"

总结:

  • ${variable:-10} 是默认值扩展,用于在变量未设置或为空时提供一个默认值。
  • ${variable: -10} 是子串扩展,用于从变量值的末尾获取一定数量的字符。

请注意,这些语法可能因不同的 shell 而异(如 bash、sh、zsh 等),但上面的解释适用于 bash。如果你使用的是其他 shell,请查阅相应的文档以获取准确的语法和行为。