【问题标题】:Why can substring variable expansion reference a variable without a dollar sign?为什么子字符串变量扩展可以引用没有美元符号的变量?
【发布时间】:2019-12-10 02:22:35
【问题描述】:

在 bash 中,要获取变量的前 4 个字符,可以这样做:

variable='this is a variable'
echo ${variable:0:4}

您可以像这样引用一个变量,而不是硬编码长度:

length=4
echo ${variable:0:$length}

但是,您似乎也可以将$length 分开:

echo ${variable:0:length}

你应该能够这样做对我来说没有意义,因为我一直认为要使用/评估一个变量,你必须在它前面加上 $

在其他语言中,我希望每个 : 之后的文本是一个数字或计算结果为数字的表达式。在 bash 中,length 不会评估任何东西,但 $length 会。

这令人困惑。有人可以帮我理解这里发生了什么吗?

【问题讨论】:

标签: bash variable-expansion


【解决方案1】:

通常使用“$”符号来扩展变量是正确的,但在某些情况下 bash 会自动扩展变量。例如在算术或间接扩展等上下文中 (有关更多详细信息,请参阅Shell expansion)。 但是,您的情况是一个简单的算术上下文扩展。

【讨论】:

    猜你喜欢
    • 2012-06-29
    • 2012-08-26
    • 1970-01-01
    • 2011-08-21
    • 1970-01-01
    • 2012-09-05
    • 2011-07-06
    • 2010-10-17
    相关资源
    最近更新 更多