${variable:-10} 和 ${variable: -10} 有什么区别?
参考答案:
在 shell 脚本中,${variable:-10}
和 ${variable: -10}
是两种完全不同的参数扩展方式,它们各自有不同的用途。
${variable:-10}
: 这种形式的参数扩展是默认值扩展。如果variable
这个变量被设置了(即不是空字符串或未定义),那么${variable:-10}
就会返回variable
的值。如果variable
没有被设置(或者其值为空字符串),那么它就会返回-10
作为默认值。
例如:
variable="hello"
echo ${variable:-10} # 输出 "hello"
unset variable
echo ${variable:-10} # 输出 "10"
${variable: -10}
: 这种形式的参数扩展是子串扩展。它返回variable
变量的值中从末尾开始的 10 个字符。注意这里有一个空格在冒号和-10
之间,这是非常重要的。
例如:
variable="abcdefghijklmnopqrstuvwxyz"
echo ${variable: -10} # 输出 "qrstuvwxyz"
总结:
${variable:-10}
是默认值扩展,用于在变量未设置或为空时提供一个默认值。${variable: -10}
是子串扩展,用于从变量值的末尾获取一定数量的字符。
请注意,这些语法可能因不同的 shell 而异(如 bash、sh、zsh 等),但上面的解释适用于 bash。如果你使用的是其他 shell,请查阅相应的文档以获取准确的语法和行为。